我已经试过很多次了,但都找不到答案!所以请帮我找到任何逻辑来得到这个答案。
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')]}
一个带有defaultdict
的简单循环应该完成:
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])
一行
main = {x[0]: [y[1] for y in abc if y[0] == x[0]] for x in abc}