比较四个字典,它们的键相同但每个在 python 中具有不同的值

comparing four dictionaries that their keys are same but each has different values in python

我有四个如下所示的字典,我想按第一个值的顺序打印它们,如果它们相等,则按第二个值的顺序打印它们,但我想不出办法。我试图将 'p' 的所有值放在一个列表中并对列表进行排序,但我再次找不到一种方法来调用哪个值对应哪个字典

a = {'p':10, 'w':3}
b = {'p':2, 'w':0}
c = {'p':3, 'w':0}
d = {'p':3, 'w':1}

输出应该是这样的:

{'p':10, 'w':3}
{'p':3, 'w':1}
{'p':3, 'w':0}
{'p':2, 'w':0}

使用排序函数的关键参数。这是问题的解决方案(请注意,反向确保最大的先出现)。

dict_list = [a,b,c,d]
dict_list.sort(reverse=True, key=lambda x: (x['p'], x['w']))
print(dict_list)
[{'p': 10, 'w': 3}, {'p': 3, 'w': 1}, {'p': 3, 'w': 0}, {'p': 2, 'w': 0}]

使用 sortedkey 参数获取自定义排序顺序。

a = {'p':10, 'w':3}
b = {'p':2, 'w':0}
c = {'p':3, 'w':0}
d = {'p':3, 'w':1}

dicts = [a,b,c,d]

print(sorted(dicts, reverse=True, key=lambda d: (d['p'], d['w'])))

对于每个字典,keyp 值和 w 值的元组 - 它给出了所需的排序顺序

输出:

[{'p': 10, 'w': 3}, {'p': 3, 'w': 1}, {'p': 3, 'w': 0}, {'p': 2, 'w': 0}]