大家好我在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
我知道为什么我的代码不起作用,但我不知道应该使用哪种工具而不是我应该采取哪些不同的工具。
答案 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]