[英]Nested For Loop to List Comprehension
給定OrderedDict
d
,我想將嵌套的for
循環轉換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
}
)
]
)
您會注意到有無序的 dict作為值。 我的目標是按時間戳排序“內部”字典,返回“內部”字典的值。 最后,我需要將“內部”字典的鍵與值結合起來。 結果應如下所示:
[
[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
因此,希望將其轉換為列表理解。
[[k] + [v_[1] for v_ in sorted(v.items())] for k,v in d.iteritems()]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.