簡體   English   中英

如何將列表作為值合並到字典中?

[英]How to incorporate lists as values in a dictionary?

我想制作一個字典,記錄所有我看過的動漫和我讀過的漫畫。 我希望按鍵是“ Anime”和“ Manga”,它們的值應該是列表,在其中可以添加我看到的系列。

amanga = {}
#total = 0

for x in range (2):
    x = input("Anime or Manga? ")
    print("How many entries? ")
    n = int(input())
    for i in range (n):
        amanga[x[i]] = input("Entry: ")

print (amanga)

這些值不在列表中,而是按原樣添加。 我已經鏈接了輸出。

https://ibb.co/7b3MqBm

我希望輸出是

{'Anime' : [Monster, Legend of the Galactic Heroes],
 'Manga' : [Berserk, 20th Century Boys] }

你快到了 嘗試這些修改。 它使用defaultdict ,可以使您的代碼更簡潔:

from collections import defaultdict

# Create a dictionary, with the default value being `[]` (an empty list)
amanga = defaultdict(list)

for _ in range(2):
    media_type = input("Anime or Manga? ")
    n = int(input("How many entries?\n"))
    amanga[media_type].extend([input("Entry: ") for _ in range(n)])

print(dict(amanga))

輸出:

Anime or Manga? Anime
How many entries?
2
Entry: Monster
Entry: Legend of the Galacic Heroes
Anime or Manga? Manga
How many entries?
2
Entry: Berserk
Entry: 20th Century Boys
{'Anime': ['Monster', 'Legend of the Galacic Heroes'], 'Manga': ['Berserk', '20th Century Boys']}

另外,您將來可以再次運行相同的代碼,它將僅向amanga添加條目。

您可以將原始代碼更改為如下所示,這不是最優雅的方法,但它是找出問題所在的好起點:

amanga = {'Anime':[], 'Manga':[]}
#total = 0

for x in range (2):
    x = input("Anime or Manga? ") #some data validation would be handy here to ensure right key is choosen
    print("How many entries? ")
    n = int(input())
    for i in range (n):
        amanga[x].append(input("Entry: "))

print (amanga)

輸出:

Anime or Manga? 'Anime'
How many entries? 
2
Entry: 'a'
Entry: 'b'
Anime or Manga? 'Manga'
How many entries? 
1
Entry: 'n'
{'Anime': ['a', 'b'], 'Manga': ['n']}

您已經知道只有兩種類型的類型(動漫和漫畫),因此可以使用這兩個鍵創建字典,然后將條目追加到它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM