Более питонный способ для работы со списками и диктовками
Я ищу более питонный 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 состоит из кортежей для ключа и из списка кортежей для значения.
2 ответа
Решение
Как насчет:
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
Я хотел бы использовать
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 (AFAIR в то время были списки, но не было выражений генератора).
В более поздних версиях я действительно использовал бы выражение генератора и делал
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))