[英]How to convert list of list to dict of dict in Python
我不太確定如何用語言解釋它,我想做的是將其轉換為:
my_list = [['a','b',1],['a','c',2],['b','a',3],['b','c',4]]
變成這樣的東西:
my_dict = {'a':{'b':1,'c':2},'b':{'a':3,'c':4}}
我試過了
for item in my_list:
my_dict[item[0]]= {item[1]:item[2]}
卻沒有達到我想要的結果。
當字典中已經有一個鍵時,您需要使用.update
而不是用新的鍵替換值。
>>> my_list = [['a', 'b', 1], ['a', 'c', 2], ['b', 'a', 3], ['b', 'c', 4]]
>>> my_dict = {}
>>> for item in my_list:
... try:
... my_dict[item[0]].update({item[1]: item[2]})
... except KeyError:
... my_dict[item[0]] = {item[1]: item[2]}
...
>>> my_dict
{'b': {'c': 4, 'a': 3}, 'a': {'b': 1, 'c': 2}}
通常,您應該以collections.defaultdict
開頭,它為所有缺少的元素返回一個空字典。
然后,您可以遍歷外部列表,以獲取子列表的第一個列表元素的條目,並將第二個元素的字典條目的值設置為第三個元素的值。
您提出的解決方案的問題是,每次在外部字典中遇到相同的鍵時,您都會覆蓋內部字典。 而不是使用
my_dict[item[0]]={item[1]:item[2]}
您需要使用.setdefault
方法,以便它在不存在dict時創建dict,在不存在的情況下僅獲取它。 然后,您可以使用新的鍵值對對其進行更新。
my_dict.setdefault(item[0], {})[item[1]] = item[2]
my_list = [['a','b',1],['a','c',2],['b','a',3],['b','c',4]]
my_dict = {}
for item in my_list:
if item[0] not in my_dict:
my_dict[item[0]]= {item[1]:item[2]}
else:
my_dict[item[0]][item[1]] = item[2]
print(my_dict)
輸出:
{'b': {'c': 4, 'a': 3}, 'a': {'b': 1, 'c': 2}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.