根据所需格式订购(但不排序)python dict

时间:2015-07-15 06:38:06

标签: python list sorting dictionary

我知道这是一个非常基本的python概念,但觉得它对某人有用。

我有以下列表

list_items = [
 ('name','Random'),
 ('type','Film'),
 ('description','Nothing'),
 ('rent_active','True'),
 ('rent_price_usd','23.4'),
 ('rent_price_episode_usd','23.4'),
 ('buy_episode_active','23.4'),

现在我想把它转换成dict,所以我们可以做dict(list_items),结果就是

{'buy_episode_active': '23.4',
 'description': 'Nothing',
 'name': 'Random',
 'rent_active': 'True',
 'rent_price_episode_usd': '23.4',
 'rent_price_usd': '23.4',
 'type': 'Film'}

但我需要的是字典中的项目应与上面列表中的项目(list_items)的顺序相同,如下所示

{
 'name': 'Random',
 'type': 'Film'
 'description': 'Nothing',
 'rent_active': 'True',
 'rent_price_usd': '23.4',
 'rent_price_episode_usd': '23.4',
 'buy_episode_active': '23.4',
 }

我知道一个列表有序的元素集合和字典是无序的元素集合,但我仍然需要上述所需格式的字典,如果我们在列表上进行额外处理或处理需要时间,我很好。那么有人可以让我知道如何根据我们要求的格式订购字典吗?

2 个答案:

答案 0 :(得分:7)

collections.OrderedDict可以满足您的需求。

答案 1 :(得分:4)

使用collections.OrderedDict

>>> list_items = [
...  ('name','Random'),
...  ('type','Film'),
...  ('description','Nothing'),
...  ('rent_active','True'),
...  ('rent_price_usd','23.4'),
...  ('rent_price_episode_usd','23.4'),
...  ('buy_episode_active','23.4'),
... ]
>>> from collections import OrderedDict
>>> mydict = OrderedDict(list_items)
>>> mydict
OrderedDict([('name', 'Random'), ('type', 'Film'), ('description', 'Nothing'), ('rent_active', 'True'), ('rent_price_usd', '23.4'), ('rent_price_episode_usd', '23.4'), ('buy_episode_active', '23.4')])

请注意,OrderedDict是在python 2.7中引入标准库的。如果你有旧版本的python,你可以在ActiveState上找到有序词典的配方