2016-12-03 192 views
2

我有包含具有含值的值,例如「13896615011」,「330405011」鍵的字典,以及一些可含有像這樣的多個值:(3012292011,1292123011)的Python - 迭代通過整數列表

我通過可能的密鑰,在這裏我要說的列表運行:

for x in list: 
    if (x in dict): 
     found_match = dict.get(x) 
     print(found_match) 

這給了我這些值:

[13896615011]

[330405011]

[3012292011,1292123011]

[2476681011]

[172450,3109930011]

等。

現在,我有一個使用上述作爲鍵打印出來的值另一個詞典,但是當我使用for循環通過每個值來讀取,它分別使我的每一個整數,如下所示:

for value in found_match: 
    print(value) 

而它將返回,爲所述第一值,

等等,列表中的所有值。我想通過found_match迭代的原因是因爲可以有兩個值而不只是一個。我想追加從我的第二個字典返回的所有可能的值,這些值使用值(例如13896615011)作爲鍵 - 所以我可以將這些值映射到我的第一個字典的原始鍵。

我該如何做到這一點?

+0

你應該追加這個「found_match」 –

+0

我很困惑,該類型的Y值我們的字典。它們是整數的字符串和元組嗎?或字符串和字符串的元組?或列表?從遍歷「found_match」時程序行爲的方式來看,當它們至少是單個值時,它們看起來像是字符串,而且您正在迭代字符而不是整數。 – Schickmeister

+0

有點挑剔:不要用Python類型'(list,dict)'的名稱來調用你的對象。' – boardrider

回答

0

如果您可以發佈一個功能正常的代碼塊來複制該問題,那將非常有幫助。但是,這聽起來像你有對象類型的問題,即你的循環打印個別字符是這樣做的,因爲found_match是一個字符串。

一些指點,我可以根據我在你的問題理解得是這樣的:

for x in _list: 
    if x in _dict: 
     print(_dict[x]) 
0

您與循環您的每一次迭代覆蓋變量found_match

你想要的是probabily以下:

matches = [] 

for x in list: 
    if (x in dict): 
     found_match = dict.get(x) 

     matches.append(found_match) 
     print(found_match) 


for value in matches: 
    print(value) 
0

我想這是你想要

什麼
found_match=[] 
for x in list: 
    if (x in dict): 
     found_match.append(dict.get(x)) 
     print(found_match) 
0

(難不成你從上面的答案意圖)

這聽起來像一個好榜樣列表理解

matches = [dict.get(x, 0) for x in _list if x in list(dict.keys())] 
0

看起來你想要的字典裏,要讀取值list.What你所能做的就是將值存儲在一個列表,而不是單一變量:

Values = [] 
    for x in list: 
     if (x in dict): 
      Values.extend(dict.get(x))   

for x in list(Values): 
    print(x) 
+0

當字典的值是一個元組或列表時,這可能會有問題,因爲將值附加到值將被附加整個對象。也許這個值應該按照類型來裝入,如果這個值是一個元組或列表,那麼應該使用「extend」而不是「append」 – Schickmeister

+0

如果這是一個字典,那麼鍵在哪裏? – Inconnu