如何以这种方式对字典列表进行排序?

How do I sort a list of dictionaries this way?

假设您有如下所示的字典列表。

data = [
    
    {
        'id':1,
        'name':'ABC corporation',
        'state': 'WA'
    },
    {
        'id':2,
        'name':'ABC corporation',
        'state': 'QLD'
    },
    {
        'id':3,
        'name':'ABC corporation',
        'state': 'WA'
    },
    {
        'id':4,
        'name':'ABC corporation',
        'state': 'QLD'
    },
    {
        'id':5,
        'name':'ABC corporation',
        'state': 'WA'
    }
]

我希望 state == QLD 所在的所有词典都排在其他词典之前(即给出的状态必须排在第一位。 所以结果将是:



data = [
    {
        'id':2,
        'name':'ABC corporation',
        'state': 'QLD'
    },
    {
        'id':4,
        'name':'ABC corporation',
        'state': 'QLD'
    },
    {
        'id':1,
        'name':'ABC corporation',
        'state': 'WA'
    },
    
    {
        'id':3,
        'name':'ABC corporation',
        'state': 'WA'
    },
    
    {
        'id':5,
        'name':'ABC corporation',
        'state': 'WA'
    }
]

注意:不只是正常排序。我想根据状态排序,只有状态值匹配。我担心给定的州字典数据将在其他州的数据之前。

试试这个,它 returns """QLD" 上,排序时它应该始终是“第一个”字符串:

def my_sort(x):
    if x["state"] == "QLD":
        return ""
    else:
        return x["state"]

sorted_data = list(sorted(data, key=my_sort))
print(sorted_data)

Python: Sorting HOW TO