如何获取包含字典中特定值的所有键?
例如: - 这是包含简单数据的字典。
{'h':['123,'4'], 'm':['456':'4'], 'a':['123,'4']}
如果我输入值4,则打印包含该数字的所有键。 这是输出。
{'h', 'm', 'a'}
答案 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'}