簡體   English   中英

Python 按多個級別上的多個值對字典進行排序

[英]Python sort a dict by multiple values on multiples levels

我有一個 python 列表,我將按多個鍵排序。

datas = {
    '123': {
        'name': 'Adam',
        'nbgamesTot': 4, 
        'winrateTot': '100.00', 
        'D1': {
            'nbwins': 4, 
            'nbgames': 4, 
            'winrate': 100
        },
        'D2': 'etc...',
    },
    '456': {
        'name': 'Mark', 
        'nbgamesTot': 4, 
        'winrateTot': '25.00', 
        'D1': {
            'nbwins': 1, 
            'nbgames': 4, 
            'winrate': 25
        },
        'D2': 'etc...',
    }, 
    '789': {
        'name': 'Yoko', 
        'nbgamesTot': 4, 
        'winrateTot': '25.00', 
        'D1': {
            'nbwins': 1, 
            'nbgames': 4, 
            'winrate': 25
        },
        'D2': 'etc...',
    }
}


但是當我嘗試時:

sorted_datas = sorted(datas.items(), key=lambda x: (x[1]['D1']['nbgames'], x[1]['nbgamesTot'], x[1]['winrateTot']), reverse=True)

我有:洋子:1/4 - 1/4 - 25 馬克:1/4 - 1/4 - 25 亞當:4/4 - 4/4 - 100

知道出了什么問題嗎? 也許 itemgetter 會是一個更好的主意? 在這種情況下怎么辦?

第二個問題:如果我想根據鍵以不同的順序排序? (例如:nbgames desc、nbgamestot asc 和 winrate desc?

預先感謝您的幫助

要修復語法錯誤,請將您的列表更改為以下內容:

datas = [
    {
    '123':
        {
        'name': 'Adam',
        'nbgamesTot': 4,
        'winrateTot':100,
        'D1':
            {
            'nbgames' : 4,
            'nb_win' : 4,
            'winrate':100,
            },
        'D2': 'etc...,'
        }
    },
    {
    '456':
        {
        'name': 'Mark',
        'nbgamesTot': 4,
        'winrateTot':25,
        'D1':
            {
            'nbgames' : 4,
            'nb_win' : 1,
            'winrate':25,
            },
        'D2': 'etc...,'
        }
    },
    {
    '789':
        {
        'name': 'Yoko',
        'nbgamesTot': 4,
        'winrateTot':25,
        'D1':
            {
            'nbgames' : 4,
            'nb_win' : 1,
            'winrate':25
            },
        'D2': 'etc...,'
        }
    }
]

謝謝

我發現了問題。 'winrateTot' 在排序前被格式化 (2.f),因此被認為是類型 'string'

暫無
暫無

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

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