sar*_*912 1 python dictionary list
我想使用这个对列表创建一个字典:
pairs = [('a', 'c'), ('b', 'c'), ('b', 'e'), ('c', 'a'), ('c', 'b'), ('c', 'd'), ('c', 'e'), ('d', 'c'), ('e', 'c'), ('e', 'f')]
Run Code Online (Sandbox Code Playgroud)
我想返回这样的东西:
{ "a" : ["c"],
"b" : ["c", "e"],
"c" : ["a", "b", "d", "e"],
"d" : ["c"],
"e" : ["c", "f"],
"f" : []}
Run Code Online (Sandbox Code Playgroud)
因此,基本上,该对中的每个元素都必须表示为键,即使它们有一个空列表。我尝试使用下面的代码:
graph = {}
for k, v in pairs:
if k not in d:
d[k] = []
d[k].append(v)
Run Code Online (Sandbox Code Playgroud)
但它仅返回该对中的第一个元素作为键:
{'a': ['c'],
'b': ['c', 'e'],
'c': ['a', 'b', 'd', 'e'],
'd': ['c'],
'e': ['c', 'f']}
Run Code Online (Sandbox Code Playgroud)
pairs = [('a', 'c'), ('b', 'c'), ('b', 'e'), ('c', 'a'), ('c', 'b'), ('c', 'd'), ('c', 'e'), ('d', 'c'), ('e', 'c'), ('e', 'f')]
d = {}
for k, v in pairs:
d.setdefault(v, [])
d.setdefault(k, []).append(v)
from pprint import pprint
pprint(d)
Run Code Online (Sandbox Code Playgroud)
印刷:
{'a': ['c'],
'b': ['c', 'e'],
'c': ['a', 'b', 'd', 'e'],
'd': ['c'],
'e': ['c', 'f'],
'f': []}
Run Code Online (Sandbox Code Playgroud)