【问题标题】:Use list values as dictionary keys as key val使用列表值作为字典键作为键值
【发布时间】:2012-05-14 06:13:46
【问题描述】:

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

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

【问题讨论】:

  • 叹息。字典是无序的。
  • @DanielRoseman 叹了口气?那有必要吗?人们来这里寻求帮助,而不是诋毁。您也可以对 Q 投反对票;比 snark 更好的信息。

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


【解决方案1】:

您需要使用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 类,所以你应该避免使用它作为变量名。

【讨论】:

    【解决方案2】:

    您总是可以只使用原始列表以正确的顺序打印字典,尽管我不确定您最终打算如何处理字典。

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

    【讨论】:

      猜你喜欢
      • 2018-09-20
      • 1970-01-01
      • 2020-08-04
      • 2014-07-06
      • 1970-01-01
      • 2021-10-07
      • 2012-04-18
      • 2019-12-27
      • 2021-08-24
      相关资源
      最近更新 更多