【发布时间】:2015-02-24 11:06:01
【问题描述】:
对于下面的元组列表:
x= [('a',1),('b', 2)]
我想把它转换成:
x_1 = {'a' : 1, 'b': 2}
如果我使用 dict(x),则 dict 变得无序,我希望它以完全相同的顺序排列。 我的课程作业真的需要这个,请快速帮助
【问题讨论】:
标签: python list dictionary tuples
对于下面的元组列表:
x= [('a',1),('b', 2)]
我想把它转换成:
x_1 = {'a' : 1, 'b': 2}
如果我使用 dict(x),则 dict 变得无序,我希望它以完全相同的顺序排列。 我的课程作业真的需要这个,请快速帮助
【问题讨论】:
标签: python list dictionary tuples
如果必须保留订单,请使用collections.OrderedDict():
>>> from collections import OrderedDict
>>> x= [('a',1),('b', 2)]
>>> x_1 = OrderedDict(x)
>>> for key in x_1:
... print(key)
...
a
b
【讨论】:
x_1.items() 同时返回 key 和 value,对 x_1 的简单迭代仅返回 key。所以请改用for key, values in x_1: print(key,values)。
x_1.items() 而不是。
.items()。 :-P
你需要collections.ordereddict
>>> from collections import OrderedDict
>>> x= [('a',1),('b', 2)]
>>> x = OrderedDict(x)
>>> x
OrderedDict([('a', 1), ('b', 2)]) # Order is preserved
这看起来不像 python 字典,但实际上可以从下面的示例中看出:
>>> x['a']
1
>>> x['b']
2
>>> for key,val in x.items():
... print(key,val)
...
a 1
b 2
【讨论】:
根据定义,Python中的字典(或关联数组)是一种无序数据结构,它存储key-value数据并允许用户具有通过给定 key 提取 value 的快速方法,以添加新对 key-value 或删除现有对。这种数据结构必须是无序的,才能使所有必要的算法快速运行。
有关字典的更多信息,请参阅wikipedia。
如果您确实需要使用键顺序,我建议您分别创建字典和列表或键。它会占用更多内存,但通常会运行得更快。
x = [('a', 1), ('b', 2)]
dct = dict(x) # dictionary
kys = zip(*x)[0] # tuple of keys
祝你好运!
【讨论】: