簡體   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