按键列表对字典进行排序
Posted
技术标签:
【中文标题】按键列表对字典进行排序【英文标题】:sort dict by key list 【发布时间】:2014-02-11 04:21:24 【问题描述】:我有这个:
order = [
'foo',
'bar',
'baz',
]
data =
'bar': 'barValue',
'foo': 'fooValue',
'baz': 'bazValue',
我想最后拥有这个:
sorted_data = [
'fooValue',
'barValue',
'bazValue',
]
所以,我有一个带有键值对的 dict,我有一个列表,其中包含该 dict 中按某种顺序排列的键。我想得到一个字典值的列表,按它们在列表中指定的顺序排序。
我需要这个,因为不幸的是 Django 在模板中不支持像这样简单的东西:
% for key in order %
<div> data[key] </div>
% endfor %
【问题讨论】:
这不叫sorting
【参考方案1】:
这里有一个非常简单的单行,它是这样的
Python 2.7 版本
>>> map(data.get, order)
['fooValue', 'barValue', 'bazValue']
Python 3.x 版本
>>> list(map(data.get, order))
['fooValue', 'barValue', 'bazValue']
【讨论】:
【参考方案2】:尝试使用列表理解:
sorted_data = [data[a_data] for a_data in order]
【讨论】:
【参考方案3】:使用列表推导:
>>> order = [
'foo',
'bar',
'baz',
]
data =
'bar': 'barValue',
'foo': 'fooValue',
'baz': 'bazValue',
>>>
>>> [data[o] for o in order]
['fooValue', 'barValue', 'bazValue']
【讨论】:
以上是关于按键列表对字典进行排序的主要内容,如果未能解决你的问题,请参考以下文章