1
def reportCSV(t):
    ret = ''
    for ev in t:
        for p in t[ev]:
            for w in t[ev][p]:
                ret += ','.join((ev, p, w, t[ev][p][w])) + '\n'
    return ret

什么是更 Pythonic 的方式来做到这一点,例如使用 itertools 等?

在这种情况下,我只是将其写入 CSV 文件。t 是一个字典 t[ev] 是一个字典 t[ev][p] 是一个字典 t[ev][p][w] 是一个浮点数

我不确定在这种情况下如何使用 itertools.product 。

4

1 回答 1

4

你所拥有的可以重写为:

def reportCSV(t):
    result = []
    for t_key, t_value in t.iteritems():
        for p_key, p_value in t_value.iteritems():
            for w_key, w_value in p_value.iteritems():
                row_data = t_key, p_key, w_key, w_value
                result.append(','.join(row_data))
    return '\n'.join(result)

这将更快,因为它将字符串连接在一起而不是执行多个连接,并且更有效,因为它使用iteritems()它消除了进行任何额外字典查找或创建中间列表的需要。

于 2012-11-20T16:50:21.073 回答