从列表中创建键值对



我有以下列表:

[("低氮"、"3 c")("3 c","5 c")("3 c","9 c")("9 c","12 c")]

我想用列表中的键值对创建如下字典:

{"低氮":"3 c","3 c":["低氮"、"5 c",' 9 c '],"9 c":"3 c","12 c","12 c":[' 9 c ']}

如有任何建议或帮助,我将不胜感激。

使用collections.defaultdict:

from collections import defaultdict
lst = [('0-N', '3-C'), ('3-C', '5-C'), ('3-C', '9-C'), ('9-C', '12-C')]
dct = defaultdict(list)
for tup in lst:
dct[tup[0]].append(tup[1])
dct[tup[1]].append(tup[0])
dct = dict(dct)
print(dct)
{'0-N': ['3-C'], '3-C': ['0-N', '5-C', '9-C'], '5-C': ['3-C'], '9-C': ['3-C', '12-C'], '12-C': ['9-C']}

您可以使用内置函数dict.setdefault:

lst = [('0-N', '3-C'), ('3-C', '5-C'), ('3-C', '9-C'), ('9-C', '12-C')]
dct = {}
for a, b in lst:
dct.setdefault(a, []).append(b)
dct.setdefault(b, []).append(a)