在字典中重新分配键w.r.t python中的另一个
我是python新手,对以下任务有问题: 我有一本字典如下:在字典中重新分配键w.r.t python中的另一个,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我是python新手,对以下任务有问题: 我有一本字典如下: 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'} A_dict中的第一个值是r,其键是0。此处的键应分配给base\u di
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'}
A_dict
中的第一个值是r
,其键是0。此处的键应分配给base\u dict(0->6)
中r
的第一个键。A_dict
中的第二个r
有一个键3;应该分配给base\u dict(3->7)
中r
的下一个键。依此类推所有其他值。在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
- 已使用排序的
,因为字典不保证顺序
>>> 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