2014-12-27 52 views
-4

下面的元组的列表:元组到字典中

x= [('a',1),('b', 2)] 

我想将其转换为:

x_1 = {'a' : 1, 'b': 2} 

如果我使用字典(X),该字典变得无序,我想它以完全相同的顺序。 真的需要为我的课程作业,请大家帮忙快速

回答

0

使用collections.OrderedDict()如果顺序必须保存:

>>> from collections import OrderedDict 
>>> x= [('a',1),('b', 2)] 
>>> x_1 = OrderedDict(x) 
>>> for key in x_1: 
...  print(key) 
... 
a 
b 
+0

这工作完美,直到我打印出的键和值,程序说ValueError:太多的值解压(预期2) 我用这个,因为我希望他们在同一行: 的关键在x_1: print(key,values) – 2014-12-27 16:20:09

+0

@PratyushKhurana,'x_1.items()'同时返回'key'和'value',简单的迭代在'x_1'上只返回'key'。因此,使用'for key,x_1:print(key,values)'中的值'来代替。 – 2014-12-27 16:37:02

+0

@PratyushKhurana:听起来像你想迭代'x_1.items()'而不是那么。 – 2014-12-27 16:58:16

0

你需要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 
0

根据定义,字典在Python(或关联数组)无序数据结构,其存储键值数据,并允许用户快速的方式由下式给出,添加到提取一对新的键值或删除现有的一对。这个数据结构必须是无序的,以使所有必要的算法能够快速工作。

有关字典的更多信息,请参阅wikipedia

如果您确实需要使用密钥顺序,我建议您分别创建字典和列表或密钥。它会占用更多的内存,但通常会更快。

x = [('a', 1), ('b', 2)] 

dct = dict(x) # dictionary 
kys = zip(*x)[0] # tuple of keys 

祝你好运!