我有2个列表
old_name_list = [a-1234, a-1235, a-1236]
new_name_list = [(a-1235, a-5321), (a-1236, a-6321), (a-1234, a-4321), ... ]
我想以递归方式搜索old_name_list中的元素是否存在于new_name_list中,并返回与之关联的值,例如。 old_name_list中的第一个元素返回a-4321
,第二个元素返回a-5321
,依此类推,直到old_name_list结束。
我尝试过以下操作但无效
for old_name, new_name in zip(old_name_list, new_name_list):
if old_name in new_name[0]:
print new_name[1]
方法我做错了还是我必须对它做一些小改动?提前谢谢。
答案 0 :(得分:7)
根据您的第二个列表构建dict()
,并在其中查找。
old_name_list = ["a-1234", "a-1235", "a-1236"]
new_name_list = [("a-1235", "a-5321"), ("a-1236", "a-6321"), ("a-1234", "a-4321") ]
d = dict(new_name_list)
for n in old_name_list:
print d[n]
你需要在“a-1234”这样的字符串周围添加引号。
答案 1 :(得分:3)
使用此:
found_items = [item[1] for item in new_name_list if item[0] in old_name_list]
答案 2 :(得分:2)
使用字典可能是最好的方法。
old_name_list = ['a-1234', 'a-1235', 'a-1236']
new_name_list = [('a-1235', 'a-5321'), ('a-1236', 'a-6321'), ('a-1234, a-4321')]
mapping = dict(new_name_list)
values = [mapping[item] if item in mapping for item in old_name_list]
print values