在多个值中查找具有值的键

时间:2016-03-29 04:02:20

标签: python dictionary

我正在尝试在字典中的某个位置找到具有特定值的键。我的字典看起来像这样。

>dict
>{'1': ['4166908', '4166673'],
 '2': ['4166835', '4167465', '4169369'],
 '3': ['4169108', '4169208', '4170285'],
 '4': ['4170065']}

这是我想要做的一个例子。

返回位置1中值为“4169208”且值为“4170285”的键。 返回的密钥应为“3”。像这样,

M = '4169208' N = '4170285'

for key, value in mydict.iteritems():
    if value[1] == m and value[2] == n:
        print key

如果我可以使用'itervalues()'或类似的函数来做这件事会很棒。

4 个答案:

答案 0 :(得分:1)

基于严格纠正您的代码,您需要做的唯一修改是首先检查以确保您检查的列表长度为>= 2.然后您可以检查查看位置的条件1和2。

d = {'1': ['4166908', '4166673'],
 '2': ['4166835', '4167465', '4169369'],
 '3': ['4169108', '4169208', '4170285'],
 '4': ['4170065']}


for i, v in d.iteritems():
    if len(v) >= 2 and v[1] == '4169208' and v[2] == '4170285':
        print(i)

答案 1 :(得分:0)

python3.5

mydict = {'1': ['4166908', '4166673'],
...  '2': ['4166835', '4167465', '4169369'],
...  '3': ['4169108', '4169208', '4170285'],
...  '4': ['4170065']}
>>> mydict
{'1': ['4166908', '4166673'], '4': ['4170065'], '2': ['4166835', '4167465', '4169369'], '3': ['4169108', '4169208', '4170285']}
>>> for key, value in mydict.items():
...     if all(v in value for v in [ '4169208', '4170285']):
...         print(key)
...
3

答案 2 :(得分:0)

dictionary = {'1': ['4166908', '4166673'],
     '2': ['4166835', '4167465', '4169369'],
     '3': ['4169108', '4169208', '4170285'],
     '4': ['4170065']}

def get_key_by_value(dictionary, check_values_list):
    for key, value in dictionary.items():
        if all(item in value for item in check_values_list):
            yield key

print list(get_key_by_value(dictionary, ['4169208', '4170285']))

答案 3 :(得分:0)

d = {'1': ['4166908', '4166673'], '2': ['4166835', '4167465', '4169369'],
     '3': ['4169108', '4169208', '4170285'], '4': ['4170065']}

for i, v in d.items():
    if '4169208' in v or '4170285' in v:
        print i