Python напечатать словарь построчно

Как напечатать словарь построчно в Python?

Я только начал изучать словари, поэтому я не уверен, как это сделать.

15 ответов

for x in cars: print (x) for y in cars[x]: print (y,':',cars[x][y]) 
A color : 2 speed : 70 B color : 3 speed : 60 

Вы могли бы использовать json Модуль для этого. dumps Функция в этом модуле преобразует объект JSON в правильно отформатированную строку, которую затем можно распечатать.

import json cars = , 'B':> print(json.dumps(cars, indent = 4)) 

В документации также указывается множество полезных опций для этого метода.

Более обобщенное решение, которое обрабатывает произвольно глубоко вложенные диктанты и списки:

def dumpclean(obj): if type(obj) == dict: for k, v in obj.items(): if hasattr(v, '__iter__'): print k dumpclean(v) else: print '%s : %s' % (k, v) elif type(obj) == list: for v in obj: if hasattr(v, '__iter__'): dumpclean(v) else: print v else: print obj 
A color : 2 speed : 70 B color : 3 speed : 60 

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

import sys def dump(obj, nested_level=0, output=sys.stdout): spacing = ' ' if type(obj) == dict: print >> output, '%s> output, '%s%s:' % ((nested_level + 1) * spacing, k) dump(v, nested_level + 1, output) else: print >> output, '%s%s: %s' % ((nested_level + 1) * spacing, k, v) print >> output, '%s>' % (nested_level * spacing) elif type(obj) == list: print >> output, '%s[' % ((nested_level) * spacing) for v in obj: if hasattr(v, '__iter__'): dump(v, nested_level + 1, output) else: print >> output, '%s%s' % ((nested_level + 1) * spacing, v) print >> output, '%s]' % ((nested_level) * spacing) else: print >> output, '%s%s' % (nested_level * spacing, obj) 

Используя эту функцию, вывод OP выглядит следующим образом:

Читайте также:  Php header doc file

который я лично нашел более полезным и описательным.

Учитывая чуть менее тривиальный пример:

Запрошенное решение OP дает это:

test 1 : 3 test3 (1, 2) abc def ghi (4, 5) : def test2 (1, 2) (3, 4) 

тогда как «улучшенная» версия дает следующее:

Я надеюсь, что это даст некоторую ценность следующему человеку, который ищет этот тип функциональности.

Источник

Python: Print items of a dictionary line by line (4 Ways)

In this article, we will discuss different ways to print line by line the contents of a dictionary or a nested dictionary in python.

As dictionary contains items as key-value pairs. So, first, let’s create a dictionary that contains student names and their scores i.e.

# A dictionary of student names and their score student_score =

Although it printed the contents of the dictionary, all the key-value pairs printed in a single line. If we have big dictionaries, then it can be hard for us to understand the contents. Therefore, we should print a dictionary line by line. Let’s see how to do that,

Frequently Asked:

dict.items() returns an iterable view object of the dictionary that we can use to iterate over the contents of the dictionary, i.e. key-value pairs in the dictionary and print them line by line i.e.

# A dictionary of student names and their score student_score = < 'Ritika': 5, 'Sam': 7, 'John': 10, 'Aadi': 8># Iterate over key/value pairs in dict and print them for key, value in student_score.items(): print(key, ' : ', value)
Ritika : 5 Sam : 7 John : 10 Aadi : 8

This approach gives us complete control over each key-value pair in the dictionary. We printed each key-value pair in a separate line.

We can iterate over the keys of a dictionary one by one, then for each key access its value and print in a separate line i.e.

# A dictionary of student names and their score student_score = < 'Ritika': 5, 'Sam': 7, 'John': 10, 'Aadi': 8># Iterate over the keys in dictionary, access value & print line by line for key in student_score: print(key, ' : ', student_scorePython напечатать словарь построчно)
Ritika : 5 Sam : 7 John : 10 Aadi : 8

Although by this approach we printed all the key value pairs line by line this is not an efficient method as compared to the previous one because to access one key-value pair, we are performing two operations.

In a single line using list comprehension & dict.items(), we can print the contents of a dictionary line by line i.e.

# A dictionary of student names and their score student_score = < 'Ritika': 5, 'Sam': 7, 'John': 10, 'Aadi': 8># Iterate over the key-value pairs of a dictionary # using list comprehension and print them [print(key,':',value) for key, value in student_score.items()]
Ritika : 5 Sam : 7 John : 10 Aadi : 8

Learn more about Python Dictionaries

In python, json module provides a function json.dumps() to serialize the passed object to a json like string. We can pass the dictionary in json.dumps() to get a string that contains each key-value pair of dictionary in a separate line. Then we can print that string,

import json # A dictionary of student names and their score student_score = < 'Ritika': 5, 'Sam': 7, 'John': 10, 'Aadi': 8># Print contents of dict in json like format print(json.dumps(student_score, indent=4))

We passed the dictionary object and count of indent spaces in json.dumps(). It returned a json like formatted string. Remember to import the json module for this approach.

Now, what if we have a nested python dictionary?

Printing nested dictionaries line by line in python

Suppose we have a nested dictionary that contains student names as key, and for values, it includes another dictionary of the subject and their scores in the corresponding subjects i.e.

# Nested dictionary containing student names and their scores in separate subjects student_score = < 'Mathew': < 'Math': 28, 'Science': 18, 'Econimics': 15>, 'Ritika': < 'Math': 19, 'Science': 20, 'Econimics': 19>, 'John': < 'Math': 11, 'Science': 22, 'Econimics': 17>>

If print this dictionary by passing it to the print() function,

Then the output will be like,

It printed all the contents in a single line. Therefore, it is tough to understand the contents. Now to print the contents of a nested dictionary line by line, we need to do double iteration i.e.

# Nested dictionary containing student names and their scores in separate subjects student_score = < 'Mathew': < 'Math': 28, 'Science': 18, 'Econimics': 15>, 'Ritika': < 'Math': 19, 'Science': 20, 'Econimics': 19>, 'John': < 'Math': 11, 'Science': 22, 'Econimics': 17>> # Iterate over key / value pairs of parent dictionary for key, value in student_score.items(): print(key, '--') # Again iterate over the nested dictionary for subject, score in value.items(): print(subject, ' : ', score)
Mathew -- Math : 28 Science : 18 Econimics : 15 Ritika -- Math : 19 Science : 20 Econimics : 19 John -- Math : 11 Science : 22 Econimics : 17

We first iterated over the items, i.e. key/value pairs of the dictionary, and for each pair printed the key. As value field is another dictionary, so we again iterated over the key-value pairs in this dictionary and printed its contents i.e. key/value pairs in separate lines.

We can do this in a single line using json module’s dumps() function i.e.

import json # Nested dictionary containing student names and their scores in separate subjects student_score = < 'Mathew': < 'Math': 28, 'Science': 18, 'Econimics': 15>, 'Ritika': < 'Math': 19, 'Science': 20, 'Econimics': 19>, 'John': < 'Math': 11, 'Science': 22, 'Econimics': 17>> print(json.dumps(student_score, indent=4))

Share your love

5 thoughts on “Python: Print items of a dictionary line by line (4 Ways)”

Very useful information.Well explained.Easy to understand for beginners.How the code works is explained too. Thanks a lot.

Leave a Comment Cancel Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Terms of Use

Disclaimer

Copyright © 2023 thisPointer

To provide the best experiences, we and our partners use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us and our partners to process personal data such as browsing behavior or unique IDs on this site and show (non-) personalized ads. Not consenting or withdrawing consent, may adversely affect certain features and functions.

Click below to consent to the above or make granular choices. Your choices will be applied to this site only. You can change your settings at any time, including withdrawing your consent, by using the toggles on the Cookie Policy, or by clicking on the manage consent button at the bottom of the screen.

The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.

The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.

The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.

The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.

Источник

Оцените статью