如何将用户输入添加到嵌套字典中?

How to add user input to a nested dictionary?

我想展示编辑后的代码,但仍然不起作用,我尝试按照建议进行操作,首先将数字转换为整数,然后将列表转换为集合。但它不断从控制台抛出相同的错误:ValueError: invalid literal for int() with base 10: '1 3 5 6 7'

完整代码如下:


lottery_numbers = [6, 7, 17, 5, 11, 25]
players = [
    {"name": "Connor", "numbers": {6, 7, 17, 34, 11, 25}},
    {"name": "Dave", "numbers": {3, 7, 35, 21, 5, 16}},
    {"name": "Emily", "numbers": {12, 28, 4, 16, 17, 5}},
    {"name": "Chris", "numbers": {34, 21, 3, 6, 13, 5}},
]
your_name = input("What is your name?")
given_numbers = input("Type any 6 numbers from 1 to 40: ")
your_numbers = [int(num) for num in given_numbers.split(',')]
your_combination = set(your_numbers)
players.append({"name": your_name, "numbers": your_combination})
print(your_combination)

numbers_matched = {}
prize_1 = 1000
prize_2 = 10000
prize_3 = 1000000

for player in players:

  numbers_matched = player["numbers"].intersection(lottery_numbers)
  print(f"{player['name']} has these numbers matched: {numbers_matched}")

  if len(numbers_matched) > 5:
    print(f"{player['name']} has won {prize_3} $")
  elif len(numbers_matched) > 4:
    print(f"{player['name']} has won {prize_2} $")
  elif len(numbers_matched) > 3:
    print(f"{player['name']} has won {prize_1} $")
  enter code here

 

首先,这里没有嵌套字典。 playerslist. Specifically, a list of dictionaries. The numbers key in each of these dictionaries is a set.

因此,要向列表中添加另一个词典,请使用 .append。然后要将 .split 返回的列表变成一个集合,您可以使用 set 转换。

此外,不要将逗号分隔的数字输入转换为 int

int(input("Type any 6 numbers from 1 to 40: "))

您如何期望 python 将 1, 2, 3, 4, 5, 6, 7 变成 int?这是行不通的。您可以将其拆分为 , 并将每个元素转换为 int

我们可以使用 comprehension

[int(x.strip()) for x in given_numbers.split(',')]

(注意,我使用 .strip 来去除任何多余的空格)

或者直接把它变成 set

set(int(x.strip()) for x in given_numbers.split(','))

这就是您的完整代码的样子-

your_name = input("What is your name?")
given_numbers = input("Type any 6 numbers from 1 to 40: ")
your_numbers = set(int(x.strip()) for x in given_numbers.split(','))
players.append({"name": your_name, "numbers": your_numbers})