Python - 字典列表中的值

时间:2011-04-14 14:53:02

标签: python

  

可能重复:
  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"

3 个答案:

答案 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相关联的词典?