如何将字符串与字典元素进行比较?

时间:2014-02-23 15:36:52

标签: python dictionary

如何检查字符串是否在字典中?我试过但它给了我一个错误,我不能使用字符串索引。

我的列表是这样的:

o_list = [{'h': 4, 'name': 'a'},{'h': 6, 'name': 'b'},{'h': 1, 'name': 'c'}]

我必须用这个变量检查​​它:

min_node = a

我试过这种方式:

for i, elem in enumerate(o_list):
    if min_node in o_list[i]['name']:
        return min_node
    else:
        return 'error in retrieving min F'

3 个答案:

答案 0 :(得分:2)

我认为你的问题是a是一个变量而不是字符串'a'

这项工作

o_list = [{'h': 4, 'name': 'a'},{'h': 6, 'name': 'b'},{'h': 1, 'name': 'c'}]

min_node = 'a'

def f():
  for i, elem in enumerate(o_list):
    if min_node == o_list[i]['name']:
        return min_node
    else:
        return 'error in retrieving min F'

print f()

然而,执行以下操作会更优雅

o_list = [{'h': 4, 'name': 'a'},{'h': 6, 'name': 'b'},{'h': 1, 'name': 'c'}]

min_node = 'a'

def f():
  for elem in o_list:
    if min_node == elem["name"]:
        return min_node
    else:
        return 'error in retrieving min F'

print f()

答案 1 :(得分:1)

不确定您使用enumerate的原因;下面的代码片段构建了一个名为names的列表,只需使用in子句来检查名称是否在此列表中:

In [2]: o_list = [{'h': 4, 'name': 'a'},{'h': 6, 'name': 'b'},{'h': 1, 'name': 'c'}]

In [3]: names = [item.get('name') for item in o_list] # build list

In [4]: names # show list contents
Out[4]: ['a', 'b', 'c']

In [5]: 'a' in names
Out[5]: True

In [6]: 'z' in names
Out[6]: False

答案 2 :(得分:0)

if any(min_node in item['name'] for item in o_list):
    return min_node
else:
    return 'error in retrieving min F'