[英]Convert a list of tuples to a dictionary
我有一個包含三個元素的元組列表:
A = [[(72, 1, 2), (96, 1, 4)],
[(72, 2, 1), (80, 2, 4)],
[],
[(96, 4, 1), (80, 4, 2), (70, 4, 5)],
[(70, 5, 4)],
]
我需要將其轉換為這種格式的字典(請注意,元組中的第二個元素將是鍵):
A_dict = { 1: {2:72, 4:96},
2: {1:72, 4:80},
3: {},
4: {1:96, 2:80, 5:70},
5: {4:70},
}
有沒有辦法將A轉換為A_dict?
我嘗試了這個:
A_dict = {b:{a:c} for a,b,c in A}
但我得到一個錯誤:
ValueError:沒有足夠的值可解包(預期3,得到2)
您可以這樣做:
A_dict = {k+1: {t[2]: t[0] for t in l} for k, l in enumerate(A)}
>>> A_dict
{
1: {2: 72, 4: 96},
2: {1: 72, 4: 80},
3: {},
4: {1: 96, 2: 80, 5: 70},
5: {4: 70}
}
通過根據列表的長度迭代列表的索引。 並為每個值建立自己的字典:
A_dict = {i + 1 : {v[2] : v[0] for v in A[i]} for i in range(len(A))}
將輸出:
{1: {2: 72, 4: 96},
2: {1: 72, 4: 80},
3: {},
4: {1: 96, 2: 80, 5: 70},
5: {4: 70}}
實際上,您想要的代碼是:
A_dict = {A[i][0][1] : {v[2] : v[0] for v in A[i]} for i in range(len(A)) if len(A[i]) > 0}
但這將“跳過”第三行,因為沒有列表,因此根據您的規范無法確定實際的密鑰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.