我有一个列表['111,"A","yes"','112,"B","no"','113,C,"maybe"']
我希望输出为{111:('A',"yes"),112:('B',"no"),113:('C',"maybe")]}
我试图遍历列表,然后是字符串,但最终迭代1,1,1而不是111作为完整数字。
答案 0 :(得分: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 :(得分: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')}
相关链接: