[英]Look up array of values as the value of a key of a dictionary in Python
我有一本這樣的字典:
dic = {'Mr A':[1200,1500,1100], 'Mr B':[2200, 3000, 1200]}
我想從值數組中查找一個值,以獲得滿足查詢條件的鍵。
我試過了
>>> 1200 in dic.values()
False
我只有在查詢整個數組時才能得到匹配。
>>> [1200,1500,1100] in dic.values()
True
如何查看數組內部並獲取與查詢匹配的鍵?
有什么想法嗎?
使用列表理解:
>>> dic = {'Mr A':[1200,1500,1100], 'Mr B':[2200, 3000, 1200]}
>>> [key for key, value in dic.iteritems() if 1200 in value]
['Mr A', 'Mr B']
>>> [key for key, value in dic.iteritems() if 3000 in value]
['Mr B']
dic.values()
返回[[1200, 1500, 1100], [2200, 3000, 1200]]
dic.values()
[[1200, 1500, 1100], [2200, 3000, 1200]]
dic.values()
[[1200, 1500, 1100], [2200, 3000, 1200]]
,它是列表的列表。
a in b
的計算結果為True
僅當一個或多個的元件的b
是等於a
。
所以當然1200
是不是in
dic.values()
因為:
1200 != [1200, 1500, 1100]
和
1200 != [2200, 3000, 1200]
如果要查看1200
是否在任何子列表中,則可以:
import itertools
1200 in itertools.chain(*dic.values())
有關itertools.chain
詳細信息,請參見: http : itertools.chain
如果您實際上想知道元素在其中出現的列表屬於哪個鍵,則可以:
[k for k, v in dic.items() if elem in v]
首先將elem
設置為要搜索的值的位置(例如1200
)。
這應該返回與包含您的值的列表關聯的所有鍵的列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.