簡體   English   中英

在Python中查找值數組作為字典鍵的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM