簡體   English   中英

Python dict基於dict中的兩個值排序

[英]Python dict sorting based on two values in dict

我有一個字典

>> dict = {'foo':[20,15],'bar':[10,5],'is':[35,3],'a':[20,10],'word':[50,1]}

我想找到具有最高列表值[0]和最低列表值[1] ..(或近似值)的鍵,但是它給了我很大的腦力

因此,對於此示例,預期結果將是

>> 'word':[50,1]

建議我應該更清楚地定義我的參數:現在,我希望從[0]值中打印出前10個最高結果,只要第二個值保持在5以下

感謝您抽出寶貴時間閱讀問題

您可以將max函數與適當的key函數配合使用:

>>> max(dict.items(),key=lambda x: (x[1][0],-x[1][1]))
('word', [50, 1])

請注意,在這種情況下, x[1][0] (最大值)的優先級大於第二個優先級,因此對於某些字典,如下所示:

>>> dict = { 'foo': [35,5], 'word': [60, 25]}

它將返回:

('word', [60, 25])

您還可以根據值的差異(看起來更接近您想要的)獲得項目:

>>> dict = { 'foo': [70,5], 'word': [68,1]}
>>> max(dict.items(),key=lambda x: (x[1][0]-x[1][1]))
('word', [68, 1])

嘗試下面的代碼。 我不確定它是否滿足您的所有情況

    dict = {'a': [20, 10], 'word': [50, 1], 'is': [35, 3], 'foo': [20, 15], 'bar': [10, 5]}

    value = max(dict.values())
    b = value[1]
    for each in dict.values():
        if value[0] == each[0] and each[1] < b:
             value = each

    print (dict.keys()[dict.values().index(value)],value)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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