簡體   English   中英

比較四個字典,它們的鍵相同但每個字典在 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}

使用 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'])))

對於每個字典, keyp值和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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM