2013-04-29 2 views
2

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


myList = {'1':{'name':'x',age:'18'},'2':{'name':'y',age:'19'},'3':{'name':'z',age:'20'}...} 

и результат должен быть таким:

>>> '1':{'name':'x',age:'18'} 
    '2':{'name':'y',age:'19'} 
    '3':{'name':'z',age:'20'} ... 
+0

Я только что отредактировал свой вопрос на самом деле, это словарь, содержащий словари, и я пробовал d в myList: print d, но он только печатает первое значение словаря каждый раз .. –

+0

да я только что отредактировал его =) –

+0

If это для интерпретатора python, вы можете использовать ipython. Он автоматически печатает ваш словарь. – thavan

ответ

4

Используя ваш пример:

>>> myList = {'1':{'name':'x','age':'18'},'2':{'name':'y','age':'19'},'3':{'name':'z','age':'20'}} 
>>> for k, d in myList.items(): 
    print k, d 

1 {'age': '18', 'name': 'x'} 
3 {'age': '20', 'name': 'z'} 
2 {'age': '19', 'name': 'y'} 

Другие примеры:

список словарей:

>>> l = [{'a':'1'},{'b':'2'},{'c':'3'}] 
>>> for d in l: 
    print d 

{'a': '1'} 
{'b': '2'} 
{'c': '3'} 

Словарь словарей:

>>> D = {'d1': {'a':'1'}, 'd2': {'b':'2'}, 'd3': {'c':'3'}} 
>>> for k, d in D.items(): 
    print d 

{'b': '2'} 
{'c': '3'} 
{'a': '1'} 

Если вы хотите ключ из dicts:

>>> D = {'d1': {'a':'1'}, 'd2': {'b':'2'}, 'd3': {'c':'3'}} 
>>> for k, d in D.items(): 
    print k, d 

d2 {'b': '2'} 
d3 {'c': '3'} 
d1 {'a': '1'} 
+0

это именно то, что я хотел, я только что отредактировал свой вопрос, чтобы он был яснее =) спасибо –

+1

@InbarRose +1, Также вы можете выбрать 'print repr (k), d' – jamylak

2
>>> import json 
>>> dicts = {1: {'a': 1, 'b': 2}, 2: {'c': 3}, 3: {'d': 4, 'e': 5, 'f':6}} 
>>> print(json.dumps(dicts, indent=4)) 
{ 
    "1": { 
     "a": 1, 
     "b": 2 
    }, 
    "2": { 
     "c": 3 
    }, 
    "3": { 
     "d": 4, 
     "e": 5, 
     "f": 6 
    } 
} 
2

Еще один вариант - pprint, сделанный для pretty-printi нг.

Модуль pprint предоставляет возможность «красиво печатать» произвольные структуры данных Python в форме, которая может использоваться в качестве входных данных для интерпретатора.

Список словарей:

from pprint import pprint 

l = [{'a':'1'},{'b':'2'},{'c':'3'}] 
pprint(l, width=1) 

Выход:

[{'a': '1'}, 
{'b': '2'}, 
{'c': '3'}] 

словарь со словарями значений:

from pprint import pprint 

d = {'a':{'b':'c'}},{'d':{'e':'f'}} 
pprint(d, width=1) 

Выход:

({'a': {'b': 'c'}}, 
{'d': {'e': 'f'}}) 
2
myList = {'1':{'name':'x','age':'18'}, 
      '2':{'name':'y','age':'19'}, 
      '3':{'name':'z','age':'20'}} 
for item in myList: 
    print(item,':',myList[item]) 

Выход:

3 : {'age': '20', 'name': 'z'} 
2 : {'age': '19', 'name': 'y'} 
1 : {'age': '18', 'name': 'x'} 

элемент используется для перебора ключей в Словаре и myList[item] это значение, соответствующее текущему ключу.

+1

Это намного лучше сделать, итерации по' items() 'в словаре, как в [моем ответе] (http://stackoverflow.com/a/16277582/1561176), но это тот же подход, который я использовал. +1 –

+0

@ Inbar Rose +1, да, многому научитесь от своего ответа – user2331932

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