使用列表值作为字典键作为键值val

时间:2012-05-14 06:13:46

标签: python python-3.x python-2.7

我正在使用列表值作为键创建字典。现在我希望字典键的顺序与列表值相同。请找到以下代码:

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,}

2 个答案:

答案 0 :(得分: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 :(得分:1)

您可以随时使用原始列表以正确的顺序打印字典,但我不确定您计划最后使用字典。

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