如何将列表作为值合并到字典中?

2024-06-26 14:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想编一本字典,把我看过的所有动画片和看过的漫画都记下来。我想要的关键是“动画”和“漫画”和他们的价值观是我可以添加我看到的系列列表。你知道吗

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] }

Tags: in列表forinput字典range动画关键
2条回答

您可以将原始代码更改为这样,这不是最优雅的方法,但这是找出问题所在的良好起点:

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']}

您已经知道只有两种类型(Anime和Manga),所以您可以使用这两个键创建dict,然后向它们添加条目。你知道吗

你就快到了。尝试这些修改。它使用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。你知道吗

相关问题 更多 >