将字符串与元组列表匹配

时间:2013-12-20 08:25:05

标签: python regex list tuples matching

大家好我在Python中遇到了问题。 我试图使用以前函数的两个返回来创建一个新列表。 我想把元素列表中的每个元素都检查一下,看看它是否是至少一个duple中的第一个条目。 如果是,请将相应的数字附加到“矢量”列表中。 如果元素没有出现在duple列表中,那么我会追加一个'0'。

实施例: 使用这两个列表:

duple_list=[('C', 1), ('H', 4)]

element_list=['C', 'H', 'N']

应返回如下的矢量:

[1, 4, 0]

我当前的代码改为:

[1, 0, 4, 0, 0]

当前代码:

for element in element_list:
    for duple in duple_list:
           if element==duple[0]:
              vector.append(duple[1])
              break
          if element!=duple[0]:
              vector.append(0)
return vector

我知道为什么我的代码不起作用,但我不知道应该使用哪种工具而不是我应该采取哪些不同的工具。

1 个答案:

答案 0 :(得分:4)

>>> [dict(duple_list).get(e, 0) for e in element_list]
[1, 4, 0]

没有列表理解的步骤。从元组列表中创建dict

>>> duple_dict = dict(duple_list)
>>> duple_dict
{'H': 4, 'C': 1}

并检查element_list中的每个元素是否包含duple_dict

>>> vector = []
>>> for element in element_list:
       if element in dict(duple_dict):
           vector.append(duple_dict[element])
       else:
           vector.append(0)

>>> vector
[1, 4, 0]