【问题标题】:How to iterate over dict sorted by element in subdict?如何迭代按子字典中的元素排序的字典?
【发布时间】:2020-10-24 12:58:09
【问题描述】:

如何遍历子字典中按元素排序的字典? 例如,我有 subdicts 的 dict 并希望获得输出 按 subdict 中的 TEMP 项排序?

输入值:

d={ 'Kitchen':{'Light':22, 'Temp':23, 'Power':0},
    'Garage':{'Light':0, 'Temp':10, 'Power':5},
    'LivingRoom':{'Light':0, 'Temp':21, 'Power':120},
}

类似的东西

for i in sorted(d):
    print (i,d[i])

应该提供那个结果:

'Garage':{'Light':0, 'Temp':10, 'Power':5},
'LivingRoom':{'Light':0, 'Temp':21, 'Power':120},
'Kitchen':{'Light':22, 'Temp':23, 'Power':0},

【问题讨论】:

    标签: python sorting dictionary


    【解决方案1】:

    您可以使用sorted 函数的key 参数提供自定义lambda 函数作为排序标准:

    for k, v in sorted(d.items(), key = lambda i : i[1]['Temp']):
        print(k, v)
    

    输出:

    Garage {'Light': 0, 'Temp': 10, 'Power': 5}
    LivingRoom {'Light': 0, 'Temp': 21, 'Power': 120}
    Kitchen {'Light': 22, 'Temp': 23, 'Power': 0}
    

    另一种只使用键然后获取值的方法:

    for k in sorted(d, key = lambda k : d[k]['Temp']):
        print(k, d[k])
    

    输出:

    Garage {'Light': 0, 'Temp': 10, 'Power': 5}
    LivingRoom {'Light': 0, 'Temp': 21, 'Power': 120}
    Kitchen {'Light': 22, 'Temp': 23, 'Power': 0}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      • 2020-04-08
      • 2021-12-08
      相关资源
      最近更新 更多