Mar*_*ter 2 python sorting python-2.7
在Python中,我xml使用此模块将文件解析为字典.我的代码的核心很简单:
configdict = ConvertXmlToDict('tasks.xml')
for task in configdict['osmo_tasks']['tasks_entries']['entry']:
print task['id'], task['due_date'], task['summary']
Run Code Online (Sandbox Code Playgroud)
上面的代码将xml文件解析为字典,然后迭代tasks并打印它们.显然,它将按照从它们读取的相同顺序打印它们,xml文件:
1 736366 summary
2 735444 another summary
5 735796 blah
Run Code Online (Sandbox Code Playgroud)
如何打印按照排序的行task['due_date']?
这是一个示例xml文件:
<?xml version="1.0" encoding="utf-8"?>
<osmo_tasks version="000212">
<category_entries/>
<tasks_entries>
<entry>
<id>1</id>
<status>1</status>
<due_date>736366</due_date>
<due_time>53100</due_time>
<summary>summary</summary>
</entry>
<entry>
<id>2</id>
<status>1</status>
<due_date>735444</due_date>
<due_time>55800</due_time>
<summary>another summary</summary>
</entry>
<entry>
<id>5</id>
<status>0</status>
<due_date>735796</due_date>
<due_time>55800</due_time>
<summary>blah</summary>
</entry>
</tasks_entries>
</osmo_tasks>
Run Code Online (Sandbox Code Playgroud)
小智 5
尝试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)
Run Code Online (Sandbox Code Playgroud)
结果:
[{'date': 735444, 'id': 2}, {'date': 735796, 'id': 3}, {'date': 736366, 'id': 1}]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |