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

如果keysand中的所有值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 回答