Python 根据dict的某些元素排列dict列表

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'

我有一个字典列表,每个字典有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' : '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
在您的示例中不是数字,比较
功能的结果;它们是弦。无论其类型如何,使用