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、2 番目の要素は を返し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()2 番目のリストに基づいて a を作成し、その中で検索します。

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

これを行うには、辞書を使用するのが最善の方法かもしれません。

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 に答える
3

これを使って:

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