python-3.x - 在 python 中重新指定字典 w.r.t 中的键

  显示原文与译文双语对照的内容
86 0

我是 python 新手,但以下任务有问题:

我有一个字典如下:


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

我想将A_dict中的键与给定的base_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)A_dict 中的第二个 r 具有键 3 ;应将它的分配给 r 中的下一个键 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

时间: 原作者:

70 5

>>> 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 因为字典不保证顺序。
原作者:
...