Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中按星期天排序的词典列表_Python - Fatal编程技术网

python中按星期天排序的词典列表

python中按星期天排序的词典列表,python,Python,我有一个python中的dict列表,如下所示: [{'day':'星期三','workers':['John','Smith']}, {'day':'Monday','workers':['Kelly']}] 我想按一周中的哪一天对它们进行排序,这样结果是 [{'day':'Monday','workers':['Kelly']}, {'day':'星期三','workers':['John','Smith']}] 我可以用这个答案对工作日名称列表进行排序:但有没有办法对上述内容进行排序?

我有一个python中的dict列表,如下所示:

[{'day':'星期三','workers':['John','Smith']},
{'day':'Monday','workers':['Kelly']}]
我想按一周中的哪一天对它们进行排序,这样结果是

[{'day':'Monday','workers':['Kelly']},
{'day':'星期三','workers':['John','Smith']}]

我可以用这个答案对工作日名称列表进行排序:但有没有办法对上述内容进行排序?

您链接到的示例使用的基本方法也适用于您的词典列表案例。诀窍是,您需要从列表中的字典中提取day值以使其工作。用于
参数的
lambda
表达式是一种方法

例如:

day_order = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
data = [{'day' : 'Wednesday' , 'workers' : ['John' , 'Smith']} , {'day' : 'Monday' , 'workers' : ['Kelly']}]

sorted(data, key=lambda d: day_order.index(d["day"]))
输出:

[{'day': 'Monday', 'workers': ['Kelly']},
 {'day': 'Wednesday', 'workers': ['John', 'Smith']}]

使用lambda函数从字典中提取工作日名称,然后返回链接问题中的索引

weekdays = ["Mon", "Tue", "Wed", "Thu", "Fri"]
list_of_dicts = 
    [{'day' : 'Wednesday' , 'workers' : ['John' , 'Smith']} , 
     {'day' : 'Monday' , 'workers' : ['Kelly']}]
list_of_dicts.sort(key = lambda d: weekdays.index(d['day']))

要按键对词典排序,可以执行以下操作:

排序(dicts,key=lambda d:d[“key”]) 将此问题与以下问题的答案合并:

m=[“星期一”、“星期二”、…]
打印(已排序(dicts,key=lambda d:m.index(d[“day”]))
在这里:

lst = [{'day' : 'Wednesday' , 'workers' : ['John' , 'Smith']} ,
       {'day' : 'Monday' , 'workers' : ['Kelly']},
       {'day' : 'Friday' , 'workers' : ['Nelly']}]

m = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
result = sorted(lst, key= lambda x: m.index(x['day']))

print(result)
#[{'day': 'Monday', 'workers': ['Kelly']}, {'day': 'Wednesday', 'workers': ['John', 'Smith']}, {'day': 'Friday', 'workers': ['Nelly']}]

这回答了你的问题吗?格言天生不分等级。。你为什么首先要对它们进行分类。。通过对字典进行排序,你想达到什么目的?需要排序的是列表…@ArunKalirajaBaskaran他们试图按照字典的一个键对列表进行排序,而不是试图对字典本身进行排序。您的声明也有一段时间不正确了,Python dicts从3.6开始一直遵循/保持插入顺序,这是从3.7开始的语言规范的一部分。很好的技巧……因为我称它为错误的,这应该是显而易见的。