разделять запятые значения и хранить в отдельной строке в Python 3.x?

1

У меня есть следующий список python:

original =    [(7782, 'Mandarin, Chinese'), 
(7783, 'Italian, Conversational Spanish'), 
(7792, 'Spanish, English'), 
(7793, 'English, Italian')]

В результате я хочу:

[(7782, 'Mandarin'),
(7782, 'Chinese'),
(7783, 'Italian'),
(7783, 'Coversational Spanish'),
(7792, 'Spanish'),
(7792, 'English'),
(7793, 'English'),
(7793, 'Italian') ]

Я новичок в python. Как я могу это достичь? Мой код до сих пор выглядит так:

import pymysql
db = pymysql.connect("localhost","root","123456","itutor" )
cursor = db.cursor()
query = "SELECT distinct user_id, language from table;"
cursor.execute(query)
r = list(cursor.fetchall())
db.close()
r2 = r[0][1].split(",")
  • 0
    Можете ли вы достичь своей цели путем доступа к базе данных и изменения данных там? Я имею в виду, можете ли вы получить доступ к интерфейсу командной строки и обработать подходящий запрос SQL?
  • 0
    Количество языков не фиксировано. Я не могу использовать запрос.
Показать ещё 2 комментария
Теги:
string
list
python-3.x
list-comprehension

1 ответ

2
Лучший ответ

Предполагая, что вы не можете решить проблему вверх по течению, вы можете использовать понимание вложенного списка:

res = [(num, lang) for num, languages in original for lang in languages.split(', ')]

[(7782, 'Mandarin'),
 (7782, 'Chinese'),
 (7783, 'Italian'),
 (7783, 'Conversational Spanish'),
 (7792, 'Spanish'),
 (7792, 'English'),
 (7793, 'English'),
 (7793, 'Italian')]

Чтобы понять, как это строится, рассмотрим эквивалент for цикла:

res = []
for num, languages in original:
    for lang in languages.split(', '):
        res.append((num, lang))
  • 0
    Это было просто!!! Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню