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