Python 根据dict的某些元素排列dict列表
我有一个字典列表,每个字典有5个元素,我需要根据列表中每个dict的2个元素对这个列表进行排序。这两个元素可以取3个值 下面是一个例子:Python 根据dict的某些元素排列dict列表,python,Python,我有一个字典列表,每个字典有5个元素,我需要根据列表中每个dict的2个元素对这个列表进行排序。这两个元素可以取3个值 下面是一个例子: list = [{ 'm' : '3', 'n', : '3', 'o' : '7', 'p' : '3'}, { 'm' : '5', 'n', : '2', 'o' : '7', 'p' : '1'}, { 'm' : '3', 'n', : '1', 'o' : '7', 'p' : '1'}, { 'm' : '3', 'n', : '3', 'o'
list = [{ 'm' : '3', 'n', : '3', 'o' : '7', 'p' : '3'}, { 'm' : '5', 'n', : '2', 'o' : '7', 'p' : '1'}, { 'm' : '3', 'n', : '1', 'o' : '7', 'p' : '1'}, { 'm' : '3', 'n', : '3', 'o' : '7', 'p' : '2'}]
因此,列表顺序基于2个元素n和p,它们可以取3个值(1、2和3):
1.如果n和p是1,那么这些元素应该放在第一位
2.如果n=1和p=2,则将它们放在下一个位置
3.如果n=1和p=3,则将它们放在下一个位置
4.如果p=1和n=2,则将它们放在下一个位置
5.最后,如果p=1,n=3,则将它们放在下一个位置
6.最后是p,n是3
在这种情况下,最终清单如下:
final_list = [{ 'm' : '3', 'n', : '1', 'o' : '7', 'p' : '1'}, { 'm' : '5', 'n', : '2', 'o' : '7', 'p' : '1'}, { 'm' : '3', 'n', : '3', 'o' : '7', 'p' : '2'}, { 'm' : '3', 'n', : '3', 'o' : '7', 'p' : '3'}]
有人能给我一个最好的解决方案吗。要将列表按特定顺序排列,请使用
sorted()
内置函数或list.sort()
方法。要指定异常顺序,请将键=
参数用于这些函数之一。以下是一个可能适合您的电话:
result = sorted(list, key=lambda x: (x['n'], x['p']))
旁白:不要使用内置类型名作为变量名。这样做可能会导致以后的混乱
示例程序:
list_ = [{ 'm' : '3', 'n' : '3', 'o' : '7', 'p' : '3'},
{ 'm' : '5', 'n' : '2', 'o' : '7', 'p' : '1'},
{ 'm' : '3', 'n' : '1', 'o' : '7', 'p' : '1'},
{ 'm' : '3', 'n' : '3', 'o' : '7', 'p' : '2'}]
final_list = [{ 'm' : '3', 'n' : '1', 'o' : '7', 'p' : '1'},
{ 'm' : '5', 'n' : '2', 'o' : '7', 'p' : '1'},
{ 'm' : '3', 'n' : '3', 'o' : '7', 'p' : '2'},
{ 'm' : '3', 'n' : '3', 'o' : '7', 'p' : '3'}]
result = sorted(list_, key=lambda x: (x['n'], x['p']))
assert result == final_list
要将列表按特定顺序排列,请使用
sorted()
内置函数或list.sort()
方法。要指定异常顺序,请将键=
参数用于这些函数之一。以下是一个可能适合您的电话:
result = sorted(list, key=lambda x: (x['n'], x['p']))
旁白:不要使用内置类型名作为变量名。这样做可能会导致以后的混乱
示例程序:
list_ = [{ 'm' : '3', 'n' : '3', 'o' : '7', 'p' : '3'},
{ 'm' : '5', 'n' : '2', 'o' : '7', 'p' : '1'},
{ 'm' : '3', 'n' : '1', 'o' : '7', 'p' : '1'},
{ 'm' : '3', 'n' : '3', 'o' : '7', 'p' : '2'}]
final_list = [{ 'm' : '3', 'n' : '1', 'o' : '7', 'p' : '1'},
{ 'm' : '5', 'n' : '2', 'o' : '7', 'p' : '1'},
{ 'm' : '3', 'n' : '3', 'o' : '7', 'p' : '2'},
{ 'm' : '3', 'n' : '3', 'o' : '7', 'p' : '3'}]
result = sorted(list_, key=lambda x: (x['n'], x['p']))
assert result == final_list
如果n和p不是数字呢?
n
和p
在您的示例中不是数字;它们是弦。无论其类型如何,使用如果n和p不是数字怎么办?n
和p
在您的示例中不是数字,比较键
功能的结果;它们是弦。无论其类型如何,使用