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), ... ]

如果 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]

是我做错了方法还是我必须对其进行一些小改动?先感谢您。

4

3 回答 3

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”之类的字符串周围加上引号。

于 2012-06-12T04:31:16.610 回答
3

用这个:

found_items = [item[1] for item in new_name_list if item[0] in old_name_list]
于 2012-06-12T04:31:43.067 回答
3

使用字典可能是最好的方法。

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
于 2012-06-12T04:34:19.000 回答