Python 键值列表列表到列表字典
我已经试过很多次了,但都找不到答案! 所以请帮我找到任何逻辑来得到这个答案Python 键值列表列表到列表字典,python,list,dictionary,Python,List,Dictionary,我已经试过很多次了,但都找不到答案! 所以请帮我找到任何逻辑来得到这个答案 main={} abc=[["1",("1A",'1B','1C')], ['1',('1D','1E','1F')], ['2',('2A','2B','2C')], ['2',('2D','2E','2F')], ["3",('3A','3B','3C')]] # I WANT main DICTIONARY AS main={'1':[("1A
main={}
abc=[["1",("1A",'1B','1C')], ['1',('1D','1E','1F')], ['2',('2A','2B','2C')], ['2',('2D','2E','2F')], ["3",('3A','3B','3C')]]
# I WANT main DICTIONARY AS
main={'1':[("1A",'1B','1C'),('1D','1E','1F')], '2':[('2A','2B','2C'),('2D','2E','2F')], '3':[('3A','3B','3C')]}
一班轮
main = {x[0]: [y[1] for y in abc if y[0] == x[0]] for x in abc}
一个简单的循环和一个
from collections import defaultdict
d = defaultdict(list)
for k,l in abc:
d[k].append(l)
print(d)
defaultdict(list,
{'1': [('1A', '1B', '1C'), ('1D', '1E', '1F')],
'2': [('2A', '2B', '2C'), ('2D', '2E', '2F')],
'3': [('3A', '3B', '3C')]})
或者,如果要使用python的dict
,可以使用setdefault
将空列表设置为默认值(如果键不存在),然后使用append
:
d = dict()
for k,l in abc:
d.setdefault(k, []).append(l)
迭代循环并将键、值对添加到主字典中 也许有一种更优雅的方法可以做到这一点,但我认为简单的for循环更显式
abc=[["1",("1A",'1B','1C')], ['1',('1D','1E','1F')], ['2',('2A','2B','2C')], ['2',('2D','2E','2F')], ["3",('3A','3B','3C')]]
main = {}
for item in abc:
if item[0] not in main:
main[item[0]] = [item[1]]
else:
main[item[0]].append(item[1])
试试这个:
main = {}
for x in abc:
if x[0] not in main:
main[x[0]] = []
main[x[0]].append(x[1])