[英]How would I make a list of tuples of size three into key-value pairs?
目的:
第一個數字:第二個數字的鍵
第二個數字:值是第一個數字,但鍵是第三個數字
第三個數字:第二個數字的值
def make_dictionary_list(old_list):
return {key: values for key, *values in old_list}
輸入:
[(4157, 1, 1), (4157, 1, 10), (4157, 2, 1), (4157, 2, 10), (4157, 3, 1), (4157, 3, 10), (4157, 4, 1), (4157, 4, 10), (4182, 1, 1)]
輸出:
{4157: [4, 10], 4182: [1, 1]}
輸出不是我想要的。 如上所述,我希望第一個數字是第二個數字的鍵,而第二個數字是第三個數字的鍵。 我將如何去做?
謝謝!
您可以解開列表,然后使用dict.setdefault()將其放入字典中:
data = [(4157, 1, 1), (4157, 1, 10), (4157, 2, 1), (4157, 2, 10), (4157, 3, 1),
(4157, 3, 10), (4157, 4, 1), (4157, 4, 10), (4182, 1, 1)]
d = {}
for k,v,p in data:
key = d.setdefault(k,{})
key[v]=p
print(d)
輸出:
{4157: {1: 10, 2: 10, 3: 10, 4: 10}, 4182: {1: 1}}
您可以通過以下方式訪問它:
print( d[4157][3] ) # 10
結果比源數據短,因為您將第一個值替換為第二個值:
(4157, 1, 1) => (4157, 1, 10) # 10 replaces 1
(4157, 2, 1) => (4157, 2, 10) # etc.
(4157, 3, 1) => (4157, 3, 10)
(4157, 4, 1) => (4157, 4, 10)
您可以這樣匯總它們:
for k,v,p in data:
key = d.setdefault(k,{})
key2 = key.setdefault(v,[])
key2.append(p)
print(d)
獲得以下內容的輸出:
{4157: {1: [1, 10], 2: [1, 10], 3: [1, 10], 4: [1, 10]}, 4182: {1: [1]}}
並通過訪問
print( d[4157][3] ) # [1, 10]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.