Pythonic/itertools如何通过dict?

Pythonic/itertools如何通过dict?,python,dictionary,itertools,Python,Dictionary,Itertools,什么是更具Python风格的方法,例如使用itertools或类似工具 在本例中,我只是将其写入CSV文件。 这是一个口述 t[ev]是一句格言 t[ev][p]是一条格言 t[ev][p][w]是浮点数 我不确定在这种情况下如何使用itertools.product。您所拥有的可以重写为: def reportCSV(t): ret = '' for ev in t: for p in t[ev]: for w in t[ev][p]:

什么是更具Python风格的方法,例如使用itertools或类似工具

在本例中,我只是将其写入CSV文件。 这是一个口述 t[ev]是一句格言 t[ev][p]是一条格言 t[ev][p][w]是浮点数


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

您所拥有的可以重写为:

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

这将更快,因为它将字符串连接在一起,而不是执行大量的连接,并且更高效,因为它使用iteritems,无需进行任何额外的字典查找或创建中间列表。

您所拥有的可以重写为:

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

这将更快,因为它将字符串连接在一起,而不是执行大量的串联,并且更高效,因为它使用iteritems,无需进行任何额外的字典查找或创建中间列表。

对于t.keys中的ev,与tI中的ev相同,我有点困惑,你的口述的结构是什么?你到底想用这个口述做什么?结果如何?似乎你想递归地开发一个字典的字典的字典的字典。。。等等等等。。。但你的最终目标是什么?也许有更好的办法。显示您的数据结构、输入和预期输出。在这个问题上很难帮助你。如果您只想寻找一种递归迭代dicts的方法,它很简单,但您必须提出正确的问题。python的方法是放弃上面指出的.keys+更高效地使用标准csv模块。我不确定itertools.product或smth是否会削减它,因为您有依赖关系。看起来很复杂,只是因为你的数据结构很复杂。对于t中的ev。keys与t中的ev相同。我有点困惑,你的dict的结构是什么?你到底想用这个dict做什么?结果如何?似乎你想递归地开发一个字典的字典的字典的字典。。。等等等等。。。但你的最终目标是什么?也许有更好的办法。显示您的数据结构、输入和预期输出。在这个问题上很难帮助你。如果您只想寻找一种递归迭代dicts的方法,它很简单,但您必须提出正确的问题。python的方法是放弃上面指出的.keys+更高效地使用标准csv模块。我不确定itertools.product或smth是否会削减它,因为您有依赖关系。看起来很复杂,只是因为您的数据结构很复杂。是的,在这种情况下,这是正确的方法,但是如果您多次执行这种类型的过程,则提取keyA、keyB、keyC、value的帮助函数将易于编写,并使代码更具可读性。如果您想拥有动态深度,则必须使用递归帮助函数。是的,在这种情况下,这是正确的方法,但如果您多次执行这种类型的过程,则提取keyA、keyB、keyC、value的帮助函数将易于编写,并使代码更具可读性。如果您想拥有动态深度,那么必须使用递归辅助函数。