比较四个字典,它们的键相同但每个在 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}]
使用 sorted
的 key
参数获取自定义排序顺序。
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'])))
对于每个字典,key
是 p
值和 w
值的元组 - 它给出了所需的排序顺序
输出:
[{'p': 10, 'w': 3}, {'p': 3, 'w': 1}, {'p': 3, 'w': 0}, {'p': 2, 'w': 0}]
我有四个如下所示的字典,我想按第一个值的顺序打印它们,如果它们相等,则按第二个值的顺序打印它们,但我想不出办法。我试图将 '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}]
使用 sorted
的 key
参数获取自定义排序顺序。
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'])))
对于每个字典,key
是 p
值和 w
值的元组 - 它给出了所需的排序顺序
输出:
[{'p': 10, 'w': 3}, {'p': 3, 'w': 1}, {'p': 3, 'w': 0}, {'p': 2, 'w': 0}]