0

私はPythonが初めてで、次のタスクに問題があります:

次のような辞書があります。

A_dict = {0: 'r', 1: 's', 2: 's', 3: 'r'**, 4: 'm', 5: 'm', 6: 'a', 7: 'k'}

次のように指定された base_dict に関して、 A_dict のキーを再割り当てしたい:

base_dict = {0: 'k', 1: 'm', 2: 'm', 3: 's', 4: 'a', 5: 's', 6: 'r', 7: 'r'}

の最初の値A_dictは でr、そのキーは 0 です。ここでのキーは、 の最初のキーに割り当てる必要がありrますbase_dict (0 -> 6)。2 番目rA_dictキーは 3 です。rinの次のキーに割り当てる必要がありますbase_dict ( 3 -> 7)。他のすべての値についても同様です。の各値の数は、 の値よりも常に多くなりbase_dictますA_dict

上記の入力から以下を取得できるようにしたい:

A_dict -> base_dict
0 -> 6
1 -> 3
2 -> 5
3 -> 7
4 -> 1
5 -> 2
6 -> 4
7 -> 0

上記の関係を使用して、マトリックス内の値の位置を変更します。

私の説明が不明確でしたら申し訳ありません。誰かが私に正しい方向を教えてもらえますか?

すべての最高のK

4

1 に答える 1

1
>>> A_dict = {0: 'r', 1: 's', 2: 's', 3: 'r', 4: 'm', 5: 'm', 6: 'a', 7: 'k'}
>>> base_dict = {0: 'k', 1: 'm', 2: 'm', 3: 's', 4: 'a', 5: 's', 6: 'r', 7: 'r'}
>>>
>>> d = sorted(base_dict)
>>> used = set()
>>> for key, value in sorted(A_dict.items()):
...     key2 = next((k for k in d if base_dict[k] == value and k not in used))
...     used.add(key2)
...     print('{} -> {}'.format(key, key2))
...
0 -> 6
1 -> 3
2 -> 5
3 -> 7
4 -> 1
5 -> 2
6 -> 4
7 -> 0
  • sorted辞書は順序を保証しないため使用されます。
于 2013-10-09T09:10:21.307 に答える