将嵌套列表数据转换为字典

托尼·凯特

我正在尝试创建一个函数,该函数接受一个数据列表并构造一个字典,该字典为每个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']}

任何帮助将不胜感激。

标记

当您有一个键的重复值时,您将覆盖这些值。您需要先添加列表,然后附加到它。您可以使用 adefaultdict或仅使用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']}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章