2016-05-24 2 views
0

У меня есть словарь списков, как показано ниже.Печать словаря списков в виде одной строки

>>> my_dict 
{'a': [1, 2, 3], 'b': [4, 5, 6]} 

Я хочу напечатать все значения в одной строке следующим образом.

a123b456 

Я смог это сделать.

>>> print(''.join('{0}{1}'.format(x,y) for x,y in my_dict.iteritems())) 
a[1, 2, 3]b[4, 5, 6] 

и это

>>> print(''.join('{0}{1}{2}'.format(x,y,z) for x,y in my_dict.iteritems() for z in y)) 
a[1, 2, 3]1a[1, 2, 3]2a[1, 2, 3]3b[4, 5, 6]4b[4, 5, 6]5b[4, 5, 6]6 

И это

>>> print(''.join('{0}{1}'.format(x,y) for x,z in my_dict.iteritems() for y in z)) 
a1a2a3b4b5b6 

Существует одно условие, хотя, я хочу, чтобы напечатать с одной строки без использования строк или с помощью вложенных циклов. Я знаю, что эта единственная строка сама по себе представляет собой вложенный цикл.

+0

Каков ваш вопрос? – vaultah

+0

Пожалуйста, прочитайте вопрос полностью. –

ответ

1

Несколько подходов приходят на ум:

  1. генерировать один список, содержащий строковые представления всех (ключ, значение) пар словаря:

    ['a123', 'b456']

  2. ge проведите один (плоский) список, содержащий все ключи и списки значений:

    ['a', '1', '2', '3', 'b', '4', '5', ' 6' ]

В обоих случаях конечная строка может быть порождена конкатенации всех элементов списка.

Ниже приведены несколько возможных реализаций:

    • print ''.join(''.join(map(str, [k]+v)) for k,v in d.iteritems())
    • print ''.join(str(k)+''.join(map(str, v)) for k,v in d.iteritems())
    • print ''.join('%s%s' % (k, ''.join(map(str, v))) for k,v in d.iteritems())
    • print ''.join(map(str, sum(([k]+v for k,v in d.iteritems()), [])))
+0

Это очень помогло. Я довольно долго пытался обходным путем. –

+0

Конечно, в моих реализациях 'd' - это словарь, который вы назвали' my_dict'. – davidedb

2
print ''.join([''.join((k, ''.join([str(x) for x in v]))) for k,v in my_dict.iteritems()]) 

Захватить каждую (ключ, значение) пару предметов из словаря. Сначала соедините строковые представления списка значений (например, «123»). Затем присоедините ключ к этому (например, «a123»). Наконец, внешний join объединяет все строки для словаря.

+0

Хорошо, спасибо большое! Это помогло. Я был почти там. Просто не хватает внешнего соединения. –

+0

Рад помочь. Кстати, будьте осторожны с этим термином. «Внешнее соединение» - это общая операция с базой данных. :-) – Prune

Смежные вопросы