[英]List of lists to dict with every item in sublist as key
我想將以下list
轉換為以子列表的每個項目為鍵的dict
,值應該是子列表中元素的 rest。
list1 = [[1,2,3],
[4,5,6]]
成品應如下所示:
dict_of_list = { '1': [(2,3)],
'2': [(1,3)],
'3': [(1,2)],
'4': [(5,6)],
'5': [(4,6)],
'6': [(4,5)]}
一些嵌套理解應該起作用:
{k: [*filter(k.__ne__, l)] for l in list1 for k in l}
# {1: [2, 3], 2: [1, 3], 3: [1, 2], 4: [5, 6], 5: [4, 6], 6: [4, 5]}
這假設子列表中沒有重復項,因為我們只是在測試其他元素的不等式( k.__ne__
)。 否則:
{
k: [x for i, x in enumerate(l) if i != j]
for l in list1 for j, k in enumerate(l)
}
將工作
您應該在它們的位置周圍使用下標,而不是過濾項目。 這將避免重復項目的任何問題並且更有效:
L = [[1,2,3],
[4,5,6]]
D = { v:sl[:i]+sl[i+1:] for sl in L for i,v in enumerate(sl) }
# {1: [2, 3], 2: [1, 3], 3: [1, 2], 4: [5, 6], 5: [4, 6], 6: [4, 5]}
L = [[1,2,3],
[4,5,6]]
answer = {}
for subl in L:
for i,k in enumerate(subl):
answer[k] = [tuple(e for ii,e in enumerate(subl) if i!=ii)]
Output:
In [138]: for k,v in answer.items(): print(k,v)
1 [(2, 3)]
2 [(1, 3)]
3 [(1, 2)]
4 [(5, 6)]
5 [(4, 6)]
6 [(4, 5)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.