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'}

in 的第一个值A_dictr,它的键是 0。这里的键应该分配给 in 的第一个rbase_dict (0 -> 6)。第二个rA_dict一个键 3;应该分配给 in 的下一个rbase_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 回答