dict1
特定の値がの特定の値と一致する場合に2つの辞書の値を生成する関数をPythonで構築しようとしていますdict2
。私の関数は次のようになります。
def dict_matcher(dict1, dict2, item1_pos, item2_pos):
"""Uses a tuple value from dict1 to search for a matching tuple value in dict2. If a match is found, the other values from dict1 and dict2 are returned."""
for item1 in dict1:
for item2 in dict2:
if dict1[item1][item1_pos] == dict2[item2][item2_pos]:
yield(dict1[item1][2], dict2[item2][6])
私はdict_matcher
このように使用しています:
matches = [myresults for myresults in dict_matcher(dict1, dict2 , 2, 6)]
print(matches)
印刷するmatches
と、次のように正しく一致するdict1とdict2の値のリストが表示されます。
[('frog', 'frog'), ('spider', 'spider'), ('cricket', 'cricket'), ('hampster', 'hampster')]
この関数に変数引数を追加して、各ディクショナリから一致する値を出力するだけでなく、一致するインスタンスで各ディクショナリアイテムの他の値も出力できるようにするにはどうすればよいdict1[item1][2] and dict2[item2][6]
ですか?* argsを使用できますか?助けてくれてありがとう。
編集:わかりました、私がやろうとしていることに関していくつかの混乱があるようですので、別の例を試してみましょう。
dict1 = {1: ('frog', 'green'), 2: ('spider', 'blue'), 3: ('cricket', 'red')}
dict2 = {a: ('frog', 12.34), b: ('ape', 22.33), c: ('lemur', 90.21)}
dict_matcher(dict1, dict2, 0, 0)
dict1のvalue[0]とdict2のvalue[0]に一致する値が見つかります。この場合、一致するのは「カエル」だけです。上記の私の関数はこれを行います。私がやろうとしているのはdict1[value][0] == dict2[value][0]
、関数の引数で指定したい辞書項目から他の値を出力できるように関数を拡張することです。