比较四个字典,发现它们的键相同,但在python中每个都有不同的值
我有四本字典,如下所示,我想按第一个值的顺序打印它们,如果它们相等,则按第二个值的顺序打印它们,但我想不出一种方法。我曾尝试将“p”的所有值放入一个列表中并对列表进行排序,但还是找不到一种方法来调用哪个值对应哪个字典比较四个字典,发现它们的键相同,但在python中每个都有不同的值,python,sorting,dictionary,python-3.7,Python,Sorting,Dictionary,Python 3.7,我有四本字典,如下所示,我想按第一个值的顺序打印它们,如果它们相等,则按第二个值的顺序打印它们,但我想不出一种方法。我曾尝试将“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,
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}
使用sort函数的键参数。下面是问题的解决方案(请注意,反向操作可确保首先显示最大值)
使用
键
参数对排序
获取自定义排序顺序
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'])))
对于每个dict,键
是p
值和w
值的元组,它给出了所需的排序顺序
输出:
[{'p': 10, 'w': 3}, {'p': 3, 'w': 1}, {'p': 3, 'w': 0}, {'p': 2, 'w': 0}]
您还可以使用
操作符.itemgetter('p','w')
代替lambda,例如,导入操作符作为op;已排序(dicts,reverse=True,key=op.itemgetter('p','w'))
[{'p': 10, 'w': 3}, {'p': 3, 'w': 1}, {'p': 3, 'w': 0}, {'p': 2, 'w': 0}]