Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在字典中重新分配键w.r.t python中的另一个_Python_Python 3.x_Dictionary - Fatal编程技术网

在字典中重新分配键w.r.t 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

我是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 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

  • 已使用排序的
    ,因为字典不保证顺序

这将1和2映射到3。你应该检查钥匙是否已经用过。@tobias_k,你说得对。我修好了。谢谢你的评论。谢谢你的帮助!将检查函数next()正在执行的操作以完全理解。
>>> 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