我正在嘗試使用 defaultdict 方法將串列串列轉換為字典。
我有一個串列串列:
a= [[1,2],[2,3,4], [4,5,6], [3,7], [6,10]]
我想要這種格式的輸出:
{1: [0], 2: [0], 2: [1], 3: [1], 4: [1], 4: [2], 5: [2], 6: [2], 3: [3], 7: [3], 6: [4], 10: [4]})
這是我的代碼:
a =[[1,2],[2,3,4], [4,5,6], [3,7], [6,10]]
clusters = defaultdict(list)
cluster_sz = {}
cliques = []
cluster_idx = 0
for clique in a:
cliques.append(clique)
for v in clique:
clusters[v].append(cluster_idx)
cluster_idx =1
print(clusters)
這段代碼的輸出是:
{1: [0], 2: [0,1], 3: [1,3], 4: [1, 2], 5: [2], 6: [2, 4], 7: [3], 10: [4]})
但我需要這種型別的輸出:
{1: [0], 2: [0], 2: [1], 3: [1], 4: [1], 4: [2], 5: [2], 6: [2], 3: [3], 7: [3], 6: [4], 10: [4]})
uj5u.com熱心網友回復:
您可以嘗試使用這種方法因此,您可以創建字典串列,而不是具有重疊鍵的字典。
a= [[1,2],[2,3,4], [4,5,6], [3,7], [6,10]]
b = [{r:i} for i,k in enumerate(a) for r in k ]
[{1: 0}, {2: 0}, {2: 1}, {3: 1}, {4: 1}, {4: 2}, {5: 2}, {6: 2}, {3: 3}, {7: 3}, {6: 4}, {10: 4}]
uj5u.com熱心網友回復:
這是帶有所需輸出的縮短代碼。
a = [[1,2],[2,3,4], [4,5,6], [3,7], [6,10]]
d = {}
for i, sublist in enumerate(a):
for num in sublist:
if num not in d:
d[num] = []
d[num].append(i)
print(d)
uj5u.com熱心網友回復:
dict = {1: [0], 2: [0,1], 3: [1,3], 4: [1, 2], 5: [2], 6: [2, 4], 7: [3], 10: [4]}
convertedDict = {}
for (i, j) in dict.items():
if len(j) > 1:
for k in j:
convertedDict[i] = [k]
else:
convertedDict[i] = j
print (convertedDict)
{1:[0]、2:[1]、3:[3]、4:[2]、5:[2]、6:[4]、7:[3]、10:[4]}
那些物件,有重復的鍵,這就是為什么,轉換的字典在最后一次迭代中只保存最后一個值。
https://thispointer.com/can-a-dictionary-have-duplicate-keys-in-python/
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/530232.html
標籤:Python列表字典
上一篇:如何覆寫FORIN回圈串列行為?
