Pythonic/itertools 的方式来通过一个 dict?

标签 python dictionary python-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] 是一个 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/

相关文章:

python - OpenCV:绘制二值图像中对象的轮廓

python - 使用 continue 跳过迭代列表中的 "double iterator"循环

python - FastAPI 如何修复错误遍历文件系统 : OSError [Errno 40] Too many levels of symbolic links: '/sys/class/vtconsole/vtcon0/subsystem?

python - Django 1.9 教程第 2 部分 : No module named 'polls.apps' when running python manage. py makemigrations 投票

c# - 将 Dictionary<int, Enumerable> 转换为 Dictionary<int, Enumerable> 反转内容

python - 使用字典对 NumPy 数组进行切片

python - 在 Python 字典中的字符串中添加重复出现的字母的字符索引

python - itertools Product() 函数与 sum

python - 获取字典中与同一字典中其他键重叠的所有键

python - 将带有整数键的字典转换为 numpy 数组