繁体   English   中英

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

[英]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'
    }
]

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

试试这个,它在"QLD"上返回"" ,在排序时它应该始终是 "first" 字符串:

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:排序如何

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM