python 按键(主要是值)对字典进行排序

14ifxucb  于 2023-03-28  发布在  Python
关注(0)|答案(1)|浏览(135)

我正在尝试实施一个在道路网络中搜索瓶颈的程序。我的问题:我需要首先根据值和其次是键对字典进行排序。键是门牌号,值是瓶颈的数量。我想根据瓶颈的数量对列表进行排序,如果值相等,则按门牌号递减。
我的字典看起来像:dictionary = {3:5,2:1,5:1,4:6} {house:bottlenecks}。排序后的列表看起来像{4:6,3:5,5:1,2:1}。

dictionary = {3:5, 2:1, 5:1, 4:6}

sort_dic = {i:dictionary[i] for i in range(max(dictionary_keys),0,-1) if i in dictionary.keys()}
first_key = list(sort_dic)
first_val = list(sort_dic.values())
sort_final = {first_val.index(i):i for i in range(max(first_val),0,-1) if i in first_val}

我尝试先对键进行排序。然后对值进行排序。
它返回:

{1: 6, 2: 5, 0: 1}

值被正确排序,但它会跳过键并找到新的键,如0,它不应该存在于这个字典中。

5w9g7ksd

5w9g7ksd1#

您可以直接使用sorted对dict的所有键值对进行排序,然后将其转换回dict。

res = dict(sorted(dictionary.items(), key=lambda x: (-x[1], -x[0])))
# alternatively:
res = dict(sorted(dictionary.items(), key=lambda x: (x[1], x[0]), reverse=True))

相关问题