大家好,我遇到了 Python 方面的问题。 我正在尝试使用先前函数的两个返回来创建一个新列表。 我想获取元素列表中的每个元素并检查它是否是至少一个双元组中的第一个条目。 如果是,则将相应的数字附加到“向量”列表中。 如果该元素没有出现在双重列表中,那么我会附加一个“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
我知道为什么我的代码不起作用,但我不知道我应该改用哪个工具/我应该做些什么不同的事情。
最佳答案
>>> [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]
关于python - 将字符串匹配到元组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20699187/