2017-02-02 219 views
0

我有一個(Python)列表'A',並且對應於許多(但不是全部)該列表中的元素,我具有特定的數字。例如,我有以下名單A將列表與列表進行比較

A = [2,,6,,,12]

並且,列表A的項,其是黑體字( ,和)具有各自的值(,,),而列表A(,即 2,6,12)的其他條目沒有與它們相關聯的任何值。

我能夠在Python中爲列表中的列表創建與它們相關聯的值的列表。像

ListofLists = [[4, 5], [8, 25], [10, 55]] 

的「相關聯的值」的源(5,25,55)是ListofLists並且它具有與列表進行比較。如示例中所示,我期望在列表A中找到沒有附加任何值的條目(如缺失值),並且我想解決該問題。

我要填寫零通過與「A」比較「ListofLists價值觀在列表A中的條目不具有任何關聯的值,並,我要拿出一個新的ListofLists其中應該讀

ListofLists_new = [[2, 0], [4, 5], [6, 0], [8, 25], [10, 55], [12, 0]] 
+1

是什麼你的「相關價值」的來源? – MKesper

回答

2

假設使用dict這樣的相關值映射:

associated_values = {8: 25, 10: 55, 4: 5} 

# you may get this `dict` via. type-casting `ListofLists` to `dict` as: 
#  associated_values = dict(ListofLists) 

爲了創建一個你可以使用dict.get(key, 0)連同列表理解表達式爲:

>>> my_list = [2, 4, 6, 8, 10, 12] 

>>> [[v, associated_values.get(v, 0)] for v in my_list] 
[[2, 0], [4, 5], [6, 0], [8, 25], [10, 55], [12, 0]] 
1

爲什麼你不使用字典,它應該做好你的工作。

首先,創建一個類似於ListofLists的字典,使用第一個元素作爲鍵,第二個元素作爲每個條目的值。

然後使用dict.get(key,default_value)將是一個更優雅的解決方案。 在你的情況下,dict.get(key,0)就足夠了。

1

ListofLists轉成dict,然後您可以使用dict.get。就像這樣:

A = [2, 4, 6, 8, 10, 12] 
li = [[4, 5], [8, 25], [10, 55]] 
li_dict = {k:v for k,v in li} 
out = [[a,li_dict.get(a,0)] for a in A] 
print(out) # [[2, 0], [4, 5], [6, 0], [8, 25], [10, 55], [12, 0]] 

(我不知道這是否是你想要的)

1

考慮關聯在字典

assoc = {4:5,8:25,10:55} 
A = [2,4,8,6,10,12] 
lstoflst = [] 
for i in A: 
    if i in assoc.keys(): 
     lstoflst.append([i,assoc[i]]) 
    else: 
     lstoflst.append([i,0]) 
print(lstoflst) 
1

所有的建議使用dict是正確完成。如果你不能使用的字典 - 因爲這是功課什麼的 - 這裏的一些代碼,做什麼,我想你想:

#!python3 

A = [2, 4, 6, 8, 10, 12] 
ListofLists = [[4, 5], [8, 25], [10, 55]] 

result = [] 

for a in A: 
    for k,v in ListofLists: 
     if a == k: 
      result.append([k,v]) 
      break 
    else: 
     result.append([a,0]) 

assert result == [[2, 0], [4, 5], [6, 0], [8, 25], [10, 55], [12, 0]] 
print(result) 
1

您可以使用字典這樣的:

A = [2, 4, 6, 8, 10, 12] 
ListOfLists = [[4, 5], [8, 25], [10, 55]] 
lol_dict = {key:value for key,value in ListOfLists} 
out_dict = {key:lol_dict.get(key,0) for key in A} 
final_out = [[key,value] for key,value in out_dict.iteritems()] 
print final_out 

[[2, 0], [4, 5], [6, 0], [8, 25], [10, 55], [12, 0]] 
相關問題