1
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

たとえば itertools などを使用して、これを行うためのより Pythonic な方法は何ですか?

この場合、CSV ファイルに書き出すだけです。t は dict です t[ev] は dict です t[ev][p] は dict です t[ev][p][w] は float です

この場合、 itertools.product をどのように使用するかわかりません。

4

1 に答える 1

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()、追加の辞書検索や中間リストの作成が不要になるため、より効率的になります。

于 2012-11-20T16:50:21.073 に答える