2017-08-31 90 views
-2

我試圖尋找從字典中幾個鍵包含的值之間的關係,就像這樣:搜索關係

dictionary = {'103': ['26', '69', '91', '47', '19', '53'], '022': ['19', '92', '57', '48', '36', '46'], '507': ['47', '13', '91', '24', '74', '27'], '061': ['06', '27', '26', '71', '86', '46'], '875': ['25', '16', '28', '62', '80', '21']} 
[value for key, value in dictionary.items() if value in key.lower()] 

不過,我得到這個錯誤:

TypeError: 'in <string>' requires string as left operand, not list 

我不知道爲什麼!誰能幫我?

+4

什麼*關係*?期望的行爲是什麼? –

+1

'value'是一個列表。也許你的意思是掃描這些項目,在這種情況下,你還需要在'value'上循環。 –

+0

請提供您想要實現的內容。 – Mangohero1

回答

3

您無法測試字符串中是否包含列表。對於字符串,in運算符的左側也應該是一個字符串。

如果需要查找包含其中包含在密鑰的任何字符串值,你可以使用any

lst = [value for key, value in dictionary.items() if any(v in key for v in value)] 
print(lst) 
# [['06', '27', '26', '71', '86', '46']] 

如果您需要找到包含字符串本身,您可以在字典中的值循環並測試密鑰上的每個字符串:

lst = [v for key, value in dictionary.items() for v in value if v in key] 
print(lst) 
# ['06'] 
+1

這可能是正確的答案,因爲我理解這個問題。但是這會返回一個空的列表(所以這真的是他想要的?) – pwnsauce