[英]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}
使用 sort 函數的 key 參數。 這是該問題的解決方案(請注意,反向確保最大的首先出現)。
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}]
使用key
參數sorted
以獲取自定義排序順序。
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}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.