To jest słownik
cars = {'A':{'speed':70,
'color':2},
'B':{'speed':60,
'color':3}}
Korzystanie z tego for loop
for keys,values in cars.items():
print(keys)
print(values)
Drukuje następujące informacje:
B
{'color': 3, 'speed': 60}
A
{'color': 2, 'speed': 70}
Ale chcę, aby program wydrukował to w ten sposób:
B
color : 3
speed : 60
A
color : 2
speed : 70
Właśnie zacząłem się uczyć słowników, więc nie wiem, jak to zrobić.
python
printing
dictionary
Jett
źródło
źródło
cars = {1:4, 2:5}
tocars[x]
jest liczbą całkowitą odwzorowaną na klucz,x
a nie zestawem odwzorowanym na kluczx
. W takim przypadku nie musisz używaćfor y in cars[x]:
linii, ponieważ pobierasz tylko jedną wartość, chyba że używasz czegoś takiego jak lista lub zestaw liczb całkowitych, wtedy powinno działać. Przepraszam, minęło już kilka miesięcy, więc nie pamiętam do końca, jak doszedłem do konkluzji mojego poprzedniego komentarza. Możesz wysłać mi swój kod, a ja zobaczę, czy jestem w stanie pomóc.Możesz użyć
json
do tego modułu.dumps
Funkcji w tym module konwertuje obiekt JSON do prawidłowo sformatowany ciąg znaków, które można następnie wydrukować.Wynik wygląda jak
Dokumentacja określa również kilka przydatnych opcji dla tej metody.
źródło
print(json.dumps(cars, indent=4, ensure_ascii=False))
ponieważ w przeciwnym razie znaki spoza ASCII są nieczytelne.Bardziej uogólnionym rozwiązaniem, które obsługuje dowolnie głęboko zagnieżdżone dykty i listy, byłoby:
To daje wynik:
Wpadłem na podobną potrzebę i rozwinąłem bardziej solidną funkcję jako ćwiczenie dla siebie. Dołączam go tutaj na wypadek, gdyby miał znaczenie dla innego. Podczas uruchamiania programu nosetest okazało się również pomocne, aby móc określić strumień wyjściowy w wywołaniu, aby zamiast tego można było użyć sys.stderr.
Korzystając z tej funkcji, wyjście OP wygląda następująco:
które osobiście uważam za bardziej przydatne i opisowe.
Biorąc pod uwagę nieco mniej trywialny przykład:
Żądane rozwiązanie OP daje to:
mając na uwadze, że wersja `` ulepszona '' daje to:
Mam nadzieję, że zapewni to pewną wartość następnej osobie szukającej tego typu funkcjonalności.
źródło
pprint.pprint()
tutaj?Masz strukturę zagnieżdżoną, więc musisz również sformatować zagnieżdżony słownik:
To drukuje:
źródło
pprint.pprint()
jest dobrym narzędziem do tej pracy:źródło
źródło
To zadziała, jeśli wiesz, że drzewo ma tylko dwa poziomy:
źródło
Sprawdź następującą jedną linijkę:
Wynik:
źródło
sys.modules
, ale nie udało mi się. Chcesz spróbować?Wolę czyste formatowanie
yaml
:wynik:
źródło
pip install PyYAML
najpierw.źródło
źródło
Oto moje rozwiązanie problemu. Myślę, że podejście jest podobne, ale trochę prostsze niż niektóre inne odpowiedzi. Pozwala również na dowolną liczbę podsłówników i wydaje się działać dla dowolnego typu danych (testowałem to nawet na słowniku, który miał funkcje jako wartości):
źródło
Modyfikowanie kodu MrWonderful
źródło