2012-05-14 73 views
1

我正在创建一个使用列表值作为键的字典。现在我想以与列表值相同的顺序获取字典键。请看以下代码:使用列表值作为字典键作为键val

dict = {} 

category_list = [u'Customer', u'Consumers', u'OpenERP Partners', u'Basic Partner', u'Retailers', u'Supplier'] 

for category in category_list: 
    dict[category] = 0.0 

print "dict--->", dict 

我得到一个输出:

dict--->{u'Customer': 0.0, u'Consumers': 0.0, u'Basic Partner': 0.0, u'Supplier': 0.0, u'Retailers': 0.0, u'OpenERP Partners': 0.0} 

但我想作为列表定义以相同的顺序字典键。即输出应该如下:

dict--->{u'Customer': 0.0, u'Consumers': 0.0, u'OpenERP Partners': 0.0, u'Basic Partner': 0.0, u'Retailers': 0.0, u'Supplier': 0.0,} 
+3

感叹。字典是无序的。 –

+3

@DanielRoseman叹息?这是必要的吗?人们来这里寻求帮助,而不是诋毁。你也可以把Q投下来;比snark更好的信息。 –

回答

5

你需要使用OrderedDict。例如:

>>> import collections 
>>> d = collections.OrderedDict() 
>>> category_list = [u'Customer', u'Consumers', u'OpenERP Partners', u'Basic Partner', u'Retailers', u'Supplier'] 
>>> for category in category_list: 
... d[category] = 0.0 
... 
>>> print d 
OrderedDict([(u'Customer', 0.0), (u'Consumers', 0.0), (u'OpenERP Partners', 0.0), (u'Basic Partner', 0.0), (u'Retailers', 0.0), (u'Supplier', 0.0)]) 

此外,dict已经在Python用来指dict类,所以你应该避免使用它作为一个变量名。

1

您可以随时使用您的原始列表以正确的顺序打印字典,但我不确定您打算如何处理字典事件。

for categ in category_list: 
    print categ, dict[categ]