从字典中的特定值获取密钥

时间:2017-12-14 17:24:12

标签: python dictionary computer-science

如何获取包含字典中特定值的所有键?

  

例如: - 这是包含简单数据的字典。

{'h':['123,'4'], 'm':['456':'4'], 'a':['123,'4']}
  

如果我输入值4,则打印包含该数字的所有键。 这是输出。

{'h', 'm', 'a'}

2 个答案:

答案 0 :(得分:4)

由于您的结果是一组,我会使用set constructor

由于集合的值取决于输入数据的迭代,我会将generator expression传递给集合构造函数。

search_term = '4'
data = {'h':['123','4'], 'm':['456','4'], 'a':['123','4']}
result = set(k for k,v in data.items() if search_term in v)
assert result == {'h', 'm', 'a'}

答案 1 :(得分:1)

  

没有循环怎么样?

每个人都会给你循环,让我们尝试不同的东西:

数据是:

your_data = {'h':['123','4'], 'm':['456','4'], 'a':['123','4']}
  

没有循环的一行:

print(set(filter(lambda y:y,map(lambda x:x if '4' in your_data.get(x) else None,your_data))))

输出:

{'a', 'm', 'h'}
  

最好的方法是使用一个函数:

def search_values(x,dict_data):
    final_list=[]
    for key,value in dict_data.items():
        if x in value:
            final_list.append(key)

    return set(final_list)

print(search_values('4',your_data))

输出:

{'a', 'm', 'h'}