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] 是一个 float
我不确定在这种情况下如何使用 itertools.product。
最佳答案
你所拥有的可以重写为:
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()
无需进行任何额外的字典查找或创建中间列表.
关于Pythonic/itertools 的方式来通过一个 dict?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13477784/