0

私は、次のことを行うよりPythonicな2.4の方法を探しています:

for (keys, values) in my_dict.iteritems():
    fmt_str = '%s, %s' % (keys[0], keys[1])
    for value in values:
        fmt_str = '%s, %s, %s' % (fmt_str, value[0], value[1])
    print fmt_str

注: my_dict は、キーのタプルと値のタプルのリストから構成されます。

4

2 に答える 2

1

どうですか:

from itertools import chain

for keys, values in my_dict.iteritems():
    fmt_str = ', '.join(map(str, chain(keys, *values)))
    print fmt_str

keysとのすべての値が既に文字列である場合は、呼び出しvaluesを削除できます。map(str, ...)

for keys, values in my_dict.iteritems():
    fmt_str = ', '.join(chain(keys, *values))
    print fmt_str
于 2013-10-16T16:44:44.193 に答える
0

私は使うだろう

for (keys, values) in my_dict.iteritems():
    pairs = [keys] + list(values)
    print ', '.join(['%s, %s' % (pair[0], pair[1]) for pair in pairs])

私が本当にPython 2.4に縛られている場合(当時はリスト内包表記がありましたが、ジェネレーター式はありませんでした)。

それ以降のバージョンでは、実際にジェネレーター式を使用して、

print ', '.join('%s, %s' % (pair[0], pair[1]) for pair in pairs)

あるいは

print ', '.join('%s, %s' % (pair[0], pair[1]) for pair in itertools.chain([keys], values))
于 2013-10-16T16:44:28.613 に答える