You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于字典值排序替换并重新排列Python字典的键?

字典键替换实现方案

需求说明

  • 基于dict_position替换dict_items中的键
  • 先将dict_position['user_03']的字典值按升序排序
  • 依据排序后的顺序,重新排列并替换两个字典的对应键

初始数据

初始dict_position

dict_position = {'user_03':{'lbl301':[0,0,1,1],'lbl302':[0,2,1,1],'lbl303':[1,0,1,1],'lbl304':[1,1,1,1],'lbl305':[0,1,1,1]}}

初始dict_items

dict_items = {
    'id': {'lbl301': 'select', 'lbl302': 'Create','lbl303':'modify',   'lbl304':'backup',   'lbl305':'settings'},
    'A': {'lbl301':'Select_A','lbl302':'Create_A','lbl303':'Modify_A','lbl304':'Back Up_A','lbl305':'settings_A'},
    'B': {'lbl301':'Select_B','lbl302':'Create_B','lbl303':'Modify_B','lbl304':'Back Up_B','lbl305':'settings_B'},
    'C': {'lbl301':'Select_C','lbl302':'Create_C','lbl303':'Modify_C','lbl304':'Back Up_C','lbl305':'settings_C'}
}

用户尝试代码

working_dict_temp,wid_position_dict_temp = {},{}
wid_position_list = []

for key, item in dict_position['user_03'].items():
    working_dict_temp.update({str(item): key})
    if item not in wid_position_list:
        wid_position_list.append(item)
wid_position_list.sort()

for a, b in enumerate(wid_position_list):
    old_key = 'lbl' + str(300 + (a + 1))+"(oldkey)"
    new_key = working_dict_temp[str(b)] + "(newkey)"
    wid_position_dict_temp.update({old_key: new_key})
print(wid_position_dict_temp)

完整实现代码

# 1. 对dict_position['user_03']的值进行升序排序,获取排序后的键顺序
sorted_items = sorted(dict_position['user_03'].items(), key=lambda x: x[1])
# 生成新键与旧键的映射:新键是lbl301~lbl305按排序顺序对应旧键
key_mapping = {f'lbl{301+i}': old_key for i, (old_key, _) in enumerate(sorted_items)}

# 2. 更新dict_position
dict_position['user_03'] = {new_key: dict_position['user_03'][old_key] for new_key, old_key in key_mapping.items()}

# 3. 更新dict_items
for category in dict_items:
    dict_items[category] = {new_key: dict_items[category][old_key] for new_key, old_key in key_mapping.items()}

# 打印结果
print("更新后的dict_position:")
print(dict_position)
print("\n更新后的dict_items:")
print(dict_items)

预期结果

更新后的dict_position

{'user_03':{'lbl301':[0,0,1,1],'lbl303':[0,2,1,1],'lbl304':[1,0,1,1],'lbl305':[1,1,1,1],'lbl302':[0,1,1,1]}}

更新后的dict_items

{
    'id': {'lbl301': 'select','lbl303': 'Create' ,'lbl304':'modify','lbl305':'backup','lbl302':'settings'},
    'A': {'lbl301':'Select_A','lbl303':'Create_A','lbl304':'Modify_A','lbl305':'Back Up_A','lbl302':'settings_A'},
    'B': {'lbl301':'Select_B','lbl303':'Create_B','lbl304':'Modify_B','lbl305':'Back Up_B','lbl302':'settings_B'},
    'C': {'lbl301':'Select_C ','lbl303':'Create_C','lbl304':'Modify_C','lbl305':'Back Up_C','lbl302':'settings_C'}
}

内容的提问来源于stack exchange,提问作者Bala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:15:37