在Python中对对象列表进行排序

23 浏览
0 Comments

在Python中对对象列表进行排序

这个问题已经有了答案:

如何根据对象属性对对象列表进行排序?

在Python中,我正在将一个xml文件解析成字典,使用这个模块。我的核心代码非常简单:

configdict = ConvertXmlToDict('tasks.xml')
for task in configdict['osmo_tasks']['tasks_entries']['entry']:
    print task['id'], task['due_date'], task['summary']

上面的代码将把xml文件解析成字典,然后迭代tasks并将它们打印出来。显然,它将按照它们从xml文件中读取的顺序进行打印:

1 736366 summary
2 735444 another summary
5 735796 blah

如何根据task[\'due_date\']的值进行排序并打印这些行?

这是一个示例xml文件:



  
  
    
      1
      1
      736366
      53100summary

 

    
      2
      1
      735444
      55800another summary

 

    
      5
      0
      735796
      55800blah

 

  

admin 更改状态以发布 2023年5月23日
0
0 Comments

使用自定义键函数key来排序,可以使用sorted函数

参考资料

类似于:

sorted(configdict,key=lambda x: x['due_date'])

0
0 Comments

尝试使用内置函数 sorted: https://docs.python.org/2/library/functions.html#sorted

sorted 可以接受任何可迭代对象和用于排序的键。这里有一个类似于你的例子的示例:

sorted_test.py

configdict = {
        'tasks': {
            'entries': [
                { 'id': 1, 'date': 736366 },
                { 'id': 2, 'date': 735444 },
                { 'id': 3, 'date': 735796 }
                ]
            }
        }
tasks = sorted([ t for t in configdict['tasks']['entries'] ], key=lambda task: task['date'])
print repr(tasks)

结果:

[{'date': 735444, 'id': 2}, {'date': 735796, 'id': 3}, {'date': 736366, 'id': 1}]

0