2015-07-15 3 views
1

У меня есть список ['111,"A","yes"','112,"B","no"','113,C,"maybe"'] Я хотел бы выход быть {111:('A',"yes"),112:('B',"no"),113:('C',"maybe")]}Создание словаря из строки внутри списка?

Я попытался итерацию по списку, а затем строки, но она заканчивается переборе 1,1,1 вместо 111 в виде полный номер.

+1

Вы можете перебирать список, и для каждой строки используйте split (','), чтобы получить три подстроки, которые вы хотите. – puzzlepalace

+0

Для вывода вы начинаете с '{' и заканчиваете '' 'вы хотите, чтобы выход был списком или словарем? –

+0

словарь! Извини за это – pythonbeginner4556

ответ

3

Использование str.split():

In [1]: lst = ['111,"A","yes"','112,"B","no"','113,C,"maybe"'] 

In [2]: dict((int(s[0]), s[1].split(',')) for s in (grp.split(',', 1) 
              for grp in lst)) 
Out[2]: {111: ['"A"', '"yes"'], 
     112: ['"B"', '"no"'], 
     113: ['C', '"maybe"']} 
1

Нечто подобное возможно:

strings = ['111,"A","yes"','112,"B","no"','113,C,"maybe"'] 

# now get rid of the superfluous double quotes with str.replace 
# and str.split on the commas to make a list of lists 
strings = [s.replace('"', '').split(',') for s in strings] 

>>> print strings 
[['111', 'A', 'yes'], ['112', 'B', 'no'], ['113', 'C', 'maybe']] 

# make the dict with a dict comprehension 
d = {int(s[0]):(s[1], s[2]) for s in strings} 

>>> print d 
{111: ('A', 'yes'), 112: ('B', 'no'), 113: ('C', 'maybe')} 

Соответствующие ссылки:

str.split()

str.replace()

Смежные вопросы