[英]Converting nested list data into a dictionary
我正在尝试创建一个函数,该函数接受一个数据列表并构造一个字典,该字典为每个data[0]
条目创建一个键,其中包含一个对应值列表,这些值是指向初始键条目的链接。 如果有多个链接,则应该重复相同的值条目。
以下是所需输出的示例:
data = [("a", "b"),
("a", "b"),
("a", "c"),
("b", "c"),
("b", "a")]
data_to_dict(data)
# output
{"a" : ["b", "b", "c"], "b" : ["a", "c"]}
我写了一些能够正确形成键的初始代码,但它只注册了最后一个键值对,而不是创建所有对的列表。
我的代码:
dict_data = {i[0]:[i[1]] for i in data}
print(dict_data)
# output
{'a': ['c'], 'b': ['a']}
任何帮助将不胜感激。
当您有一个键的重复值时,您将覆盖这些值。 您需要先添加列表,然后附加到它。 您可以使用defaultdict
或仅使用setdefault()
from collections import defaultdict
d = defaultdict(list)
for k, v in data:
d[k].append(v)
print(d)
# defaultdict(list, {'a': ['b', 'b', 'c'], 'b': ['c', 'a']})
# defaultdicts work like a regular dict, but you
# convert if you need to for some reason
dict(d)
{'a': ['b', 'b', 'c'], 'b': ['c', 'a']}
或者使用setdefault()
:
d = {}
for k, v in data:
d.setdefault(k, []).append(v)
print(d)
#{'a': ['b', 'b', 'c'], 'b': ['c', 'a']}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.