繁体   English   中英

如何将元组和整数列表转换为嵌套字典?

[英]How do I convert from a list of tuples and integers to a nested dictionary?

我有一个包含元组和整数的列表
例如

mylist = [ (('ART', 'bar'), 2), (('ART', 'get'), 1), (('b', 'bet'), 1), (('b', 'chest'), 1), (('b', 'kart'), 2), (('b', 'zee'), 1)]

我想转换成这个嵌套字典

my_dict = {
    "ART": {"bar": 2, "get": 1},
    "b": {"bet": 1, "chest": 1, "kart": 2,"zee": 1}
}

我一直在尝试使用 for 循环来做到这一点,但我是初学者,而且我对嵌套字典没有任何经验,所以我真的不知道从哪里开始。 我已经查看了与字典的字典相关的其他问题,例如thisthis但建议的方法对我不起作用(我假设因为我正在处理元组而不仅仅是列表列表。)

您可以遍历输入并使用setdefault填充字典:

my_dict = {}
for (key, prop), value in mylist:
    my_dict.setdefault(key, {})[prop] = value

尝试这个:

mylist = [ (('ART', 'bar'), 2), (('ART', 'get'), 1), (('b', 'bet'), 1), 

(('b', 'chest'), 1), (('b', 'kart'), 2), (('b', 'zee'), 1)]
mydict = dict()

for i in mylist:
    if i[0][0] not in mydict.keys():
        mydict[i[0][0]] = {i[0][1]: i[1]}
    else:
        mydict[i[0][0]][i[0][1]] = i[1]
print(mydict)

您可以使用collections.defaultdict

from collections import defaultdict
my_dict = defaultdict(dict)
for (k1,k2),v in mylist:
    my_dict[k1][k2] = v
my_dict = dict(my_dict)

Output:

{'ART': {'bar': 2, 'get': 1}, 'b': {'bet': 1, 'chest': 1, 'kart': 2, 'zee': 1}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM