【问题标题】:Python: The best way to get complex dictionary valuesPython:获取复杂字典值的最佳方法
【发布时间】:2011-03-14 11:06:37
【问题描述】:

我有一本以下格式的字典

{'array': [[{u'unsigned': 15.0}], [{u'octet-string': 12.0}], [{u'octet-string': 12.0}], [{u'八进制字符串': 12.0}], [{u'八进制字符串': 45.0}], [{u'八进制字符串': 78.0}], [{u'八进制字符串': 89.0}], [{ u'octet-string': 65.0}], [{u'octet-string': 352.0}], [{u'octet-string': 45.0}], [{u'octet-string': 12.0}], [{u'octet-string': 45.0}], [{u'octet-string': 78.0}], [{u'octet-string': 98.0}], [{u'octet-string': 352.0} ], [{u'octet-string': 56.0}], [{u'octet-string': 89.0}], [{u'octet-string': 78.0}], [{u'octet-string': 45.0}], [{u'octet-string': 12.0}], [{u'octet-string': 23.0}], [{u'octet-string': 65.0}], [{u'octet-string ': 65.0}], [{u'octet-string': 45.0}], [{u'octet-string': 78.0}], [{u'octet-string': 899.0}], [{u'octet -string': 8989.0}], [{u'octet-string': 6565.0}], [{u'octet-string': 323.0}], [{u'octet-string': 1211.0}]]}

获取 [15.0,12.0,12.0,12.0,45.0,,,,etc] 值的最有效方法是什么

【问题讨论】:

  • 如果您的内部字典只有 1 个值,为什么还要用列表封装它们?
  • 您有一本字典,其中包含一个列表列表,每个列表都包含一个具有一个值的字典,并且所有这些字典对该值使用相同的键。这可能是有史以来最糟糕的存储模型。

标签: python dictionary


【解决方案1】:

这是对您正在处理的数据做出各种假设,但在您提供的示例中,您可以这样做:

[ a[0].values()[0] for a in d['array'] ]

... 其中d 是您的字典,如上所述。计算结果为:

[15.0, 12.0, 12.0, 12.0, 45.0, 78.0, 89.0, 65.0, 352.0,
 45.0, 12.0, 45.0, 78.0, 98.0, 352.0, 56.0, 89.0, 78.0,
 45.0, 12.0, 23.0, 65.0, 65.0, 45.0, 78.0, 899.0, 8989.0,
 6565.0, 323.0, 1211.0]

【讨论】:

    【解决方案2】:
    [elem[0].values()[0] for elem in yourDict['array']]
    

    【讨论】:

      【解决方案3】:

      如果您有字典d,则可以使用d.values() 获取字典中的所有值。例如:

      d = {'a': 1.0, 'b': 2.0}
      print(d.values())   # [1.0, 2.0]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-15
        • 2017-02-17
        • 2018-10-02
        • 1970-01-01
        • 1970-01-01
        • 2014-01-14
        • 1970-01-01
        相关资源
        最近更新 更多