[英]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 循環來做到這一點,但我是初學者,而且我對嵌套字典沒有任何經驗,所以我真的不知道從哪里開始。 我已經查看了與字典的字典相關的其他問題,例如this和this但建議的方法對我不起作用(我假設因為我正在處理元組而不僅僅是列表列表。)
您可以遍歷輸入並使用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.