如何以这种方式对字典列表进行排序?
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)
假设您有如下所示的字典列表。
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)