可能重复:
What's the best way to search for a Python dictionary value in a list of dictionaries?
我有一个字典列表
my_dict_list = []
my_dict_list.append({'text':'first value', 'value':'number 1'})
my_dict_list.append({'text':'second value', 'value':'number 2'})
my_dict_list.append({'text':'third value', 'value':'number 3'})
我还有另一个表单:
results = ['number 1', 'number 4']
我如何循环查看results
列表,检查值是否在dict
中,例如
for r in results:
if r in my_dict_list:
print "ok"
答案 0 :(得分:6)
for r in result:
for d in dict:
if d['value'] == r:
print "ok"
答案 1 :(得分:3)
map(lambda string: any(map(lambda item: item['value'] == string, dict)), results)
会返回给定[True, False]
的{{1}}列表。虽然在这里使用results
更合适,因为您可以在找到值时断开嵌套循环。 for
会审核any
中的所有项目。
此外,不要调用列表dict
,也不要使用内置类型/函数名作为变量。
答案 2 :(得分:1)
嗯,在你的情况下,你的dict变量不是一个字典,它是一个包含3个字典的列表,每个字典包含2个键(文本和值)。请注意,我认为这两个值都是一个变量,或者你忘记了它周围的引号(我在这里添加了它们)
[{'text': 'second value', 'value': 'number 2'}, {'text': 'third value', 'value': 'number 3'}, {'text': 'first value', 'value': 'number 1'}]
如果这是您的预期,那么您可以使用以下内容:
mySetOfValues=set([x['value'] for x in my_dict_list])
for r in results:
if r in mySetOfValues:
print 'ok'
但是,如果我理解正确,也许你想创建一个将第一个值与数字1相关联的词典?