首页 > 解决方案 > 在嵌套字典中切换两个字典

问题描述

我正在尝试在另一个字典中交换两个字典。
我想看到以下结果:

input: {10: {"name": "name_value1", "price1": "price_value1"}, 
        30: {"name": "name_value3", "price3": "price_value3"}, 
        20: {"name": "name_value2", "price2": "price_value2"}}
output:{10: {"name": "name_value1", "price1": "price_value1"}, 
        20: {"name": "name_value2", "price2": "price_value2"}, 
        30: {"name": "name_value3", "price3": "price_value3"}}

我尝试了很多不同的东西,有时值的顺序正确,但键没有更新。下面的代码就是一个例子。

def my_sort(dct):
    index = 0
    key_list = list(dct.keys())
    while index < (len(dct) - 1):
        if key_list[index] > key_list[index + 1]:
            dct[key_list[index]], dct[key_list[index + 1]] = dct[key_list[index + 1]], dct[key_list[index]]
            key_list[index], key_list[index + 1] = key_list[index + 1], key_list[index]
            index = 0
        else:
            index += 1
            
    return dct

此代码输出以下内容:

{10: {"name": "name_value1", "price1": "price_value1"}, 
 30: {"name": "name_value2", "price2": "price_value2"}, 
 20: {"name": "name_value3", "price3": "price_value3"}}

注意:我不能为此使用外部库/框架,也不能使用 sorted() 之类的函数。

欢迎所有帮助和建议!先感谢您。

标签: pythonsortingdictionaryswap

解决方案


你可以使用 sorted() 吗?

d = {10: {"name": "name_value1", "price1": "price_value1"},
        30: {"name": "name_value3", "price3": "price_value3"},
        20: {"name": "name_value2", "price2": "price_value2"}}

dict(sorted(d.items(), reverse=False))

输出:

{10: {'name': 'name_value1', 'price1': 'price_value1'},
 20: {'name': 'name_value2', 'price2': 'price_value2'},
 30: {'name': 'name_value3', 'price3': 'price_value3'}}

推荐阅读