我有这样的字典:
dic = {'Mr A':[1200,1500,1100], 'Mr B':[2200, 3000, 1200]}
我希望从值数组中查找值以获取满足查询的键。
我试过了,
>>> 1200 in dic.values()
False
我只有在查看整个阵列时才会得到一个匹配。
>>> [1200,1500,1100] in dic.values()
True
如何查看数组内部并获取与查询匹配的键?
有什么想法吗?
答案 0 :(得分:6)
使用列表理解:
>>> 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']
答案 1 :(得分:0)
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
如果您确实想知道元素所在的列表属于哪个键,您可以:
[k for k, v in dic.items() if elem in v]
您首先要将elem
设置为您要搜索的值(例如1200
)。
这应该返回与包含您的值的列表关联的所有键的列表。