Pythonic / itertools通过词典的方式?

时间:2012-11-20 16:36:24

标签: python dictionary itertools

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。

1 个答案:

答案 0 :(得分: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(),无需进行任何额外的字典查找或创建中间列表。