【问题标题】:Nested For Loop to List Comprehension嵌套 For 循环列表理解
【发布时间】:2016-02-18 05:30:47
【问题描述】:

鉴于OrderedDict d,我想将嵌套的for 循环转换为列表理解。 OrderedDict d 看起来像这样:

import collections
import numpy as np

d = collections.OrderedDict(
    [
        (
            60.0, 
            {
                Timestamp('2016-03-24 00:00:00'): np.nan, 
                Timestamp('2016-03-11 00:00:00'): 2.0173333333333336, 
                Timestamp('2016-02-19 00:00:00'): np.nan, 
                Timestamp('2016-02-26 00:00:00'): np.nan, 
                Timestamp('2016-03-04 00:00:00'): np.nan, 
                Timestamp('2016-03-18 00:00:00'): np.nan, 
                Timestamp('2016-04-01 00:00:00'): np.nan
            }
        ), (
            65.0, 
            {
                Timestamp('2016-03-24 00:00:00'): np.nan, 
                Timestamp('2016-03-11 00:00:00'): np.nan, 
                Timestamp('2016-02-19 00:00:00'): np.nan, 
                Timestamp('2016-02-26 00:00:00'): np.nan, 
                Timestamp('2016-03-04 00:00:00'): 1.8621538461538463, 
                Timestamp('2016-03-18 00:00:00'): np.nan, 
                Timestamp('2016-04-01 00:00:00'): np.nan
            }
        )
    ]
)

您会注意到有 无序 dicts 作为值。我的目标是按时间戳订购“内部”字典,返回“内部”字典的值。最后,我需要将“内部”字典的键与值结合起来。结果应如下所示:

[
    [60.0, nan, nan, nan 2.0173333333333336, nan, nan, nan],
    [65.0, nan, nan, 1.8621538461538463, nan, nan, nan, nan]
]

以下代码可以很好地打印出来,我想避免附加到列表中:

for k,v in d.iteritems():
    od = collections.OrderedDict(sorted(v.items()))
    for k_, v_ in od.iteritems():
        print k, k_, v_

我也尝试了以下方法,但它没有按键排序:

for row in [[k] + sorted(v.values()) for k, v in d.iteritems()]:
    print row

因此,希望将其转换为列表理解。

【问题讨论】:

  • ​​​​​​​​​​​​​​​​nan是什么?
  • 对不起,numpy 的 nan,将编辑

标签: python list python-2.7 dictionary


【解决方案1】:
[[k] + [v_[1] for v_ in sorted(v.items())] for k,v in d.iteritems()]

【讨论】:

  • TypeError: 'float' object has no attribute '__getitem__'
  • 出现错别字,重试
猜你喜欢
  • 2011-04-07
  • 2021-02-13
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 2021-02-03
相关资源
最近更新 更多