所以我有一個成對嵌套的串列:
my_list = [[5,8],[5,10],[3,1],[10,18],[10,20],[21,30]
現在我想要一個字典,它以第一個數字為鍵,然后列出所有匹配的第二個數字作為值:所以 {3: [1], 5: [8,10], 10: [18,20], 21: [ 30]}
我已經得到了一個字典,其中包含必要的唯一鍵和帶有空值的排序鍵。現在如何使用串列中的正確值填充此字典?
uj5u.com熱心網友回復:
def foo(d, arr):
for k, v in arr:
if d.get(k):
d[k].append(v)
else:
d[k] = [v]
d = {}
foo(d, my_list)
d
# {5: [8, 10], 3: [1], 10: [18, 20], 21: [30]}
uj5u.com熱心網友回復:
使用dict.setdefault我們可以動態創建新字典內部的內部結構,而無需檢查key字典內部是否已經存在:
my_list = [[5, 8], [5, 10], [3, 1], [10, 18], [10, 20], [21, 30]]
d = {}
for key, value in my_list:
d.setdefault(key, []).append(value)
print(d) # Output: {5: [8, 10], 3: [1], 10: [18, 20], 21: [30]}
uj5u.com熱心網友回復:
您可以通過以下方式實作map():
output = {}
def mapper(elem):
values = output.get(elem[0], [])
values.append(elem[1])
output[elem[0]] = values
return output
map(mapper, my_list)
正如@DeepSpace 所提到的,此解決方案在 Python 3 中無效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/318186.html
上一篇:將主要游戲回圈轉化為功能
