从字典打印python
我正在尝试编写代码来收集参加活动的人数。根据输入的人数,我会多次询问a)个人姓名,b)他们捐赠的玩具数量。我想把这些信息输入一个字典,我将把它传递给另一个函数。第二个功能将选择捐赠超过20件玩具的个人,将他们的姓名和捐赠玩具的数量打印为“1级”,然后将其他所有人打印为“2级” 我已经检查以确保数据从一个函数正确地传递到另一个函数。我在打印没有[]的捐款金额时遇到问题。此外,它会在每个条目上方打印级别,而不是在级别下方列出条目。换言之,我试图得到: 一级从字典打印python,python,dictionary,Python,Dictionary,我正在尝试编写代码来收集参加活动的人数。根据输入的人数,我会多次询问a)个人姓名,b)他们捐赠的玩具数量。我想把这些信息输入一个字典,我将把它传递给另一个函数。第二个功能将选择捐赠超过20件玩具的个人,将他们的姓名和捐赠玩具的数量打印为“1级”,然后将其他所有人打印为“2级” 我已经检查以确保数据从一个函数正确地传递到另一个函数。我在打印没有[]的捐款金额时遇到问题。此外,它会在每个条目上方打印级别,而不是在级别下方列出条目。换言之,我试图得到: 一级 赛琳娜·戈麦斯50 碧昂丝40 第2级 威
赛琳娜·戈麦斯50
碧昂丝40 第2级
威尔·史密斯5 我做错了什么 这是我的密码:
def data():
people = int(input("How many individuals are attending? "))
attendees = {}
for i in range(people):
name = str(input('Please enter name: '))
amount = int(input('Number of toys donated:'))
attendees[name]= [amount]
return attendees
def print_data():
attendees = data()
for i in attendees:
if attendees[i][0] > 20:
print('Level 1')
print(i, attendees[i])
else:
print('Level 2')
print(i, attendees[i])
print_data()
这是我的输出:
有多少人参加?三,
请输入姓名:威尔·史密斯
捐赠玩具数量:5件
请输入姓名:赛琳娜·戈麦斯
捐赠玩具数量:50件
请输入姓名:碧昂丝
捐赠玩具数量:40
第2级威尔·史密斯[5] 一级
赛琳娜·戈麦斯[50] 一级
碧昂丝[40]
应编辑这两行:
attendees[name]= [amount]
#into
attendees[name]= amount
#and
if attendees[i][0] > 20:
#into
if attendees[i] > 20:
您犯了两个错误,将输入作为列表作为每个dictionary元素的值,您必须运行两个不同的循环来查找所有大于20的值,另一个循环来打印所有小于20的值
def data():
people = int(input("How many individuals are attending? "))
attendees1 = {}
attendees2 = {}
for i in range(people):
name = str(input('Please enter name: '))
amount = int(input('Number of toys donated:'))
#amount should be just a variable not list
if amount > 20:
attendees1[name]= amount
else:
attendees2[name] = amount
return attendees1, attendees2
def print_data():
attendees1, attendees2 = data()
if len(attendees1) > 0:
print('Level 1')
for i in attendees1:
print(i, attendees1[i])
if len(attendees2) > 0:
print('Level 2')
for i in attendees2:
print(i, attendees2[i])
print_data()
像这样的东西对你有用吗
def data():
people = int(input("How many individuals are attending? "))
attendees = {}
for i in range(people):
name = str(input('Please enter name: '))
amount = int(input('Number of toys donated:'))
attendees[name]= amount
return attendees
def print_data(attendees):
level_one = []
level_two = []
for name, count in attendees.items():
if count >= 20:
level_one.append((name, count))
else:
level_two.append((name, count))
print('Level 1')
for name, count in level_one:
print(name, count)
print('\nlevel 2')
for name, count in level_two:
print(name, count)
attendees = data()
print_data(attendees)
只需删除此处的括号:
attenders[name]=[amount]
应该是attenders[name]=amount
,否则您将把列表保存到字典中。这就是为什么它会在输出中显示括号。为什么要在第一位添加括号?谢谢你,zipa。这解决了[]问题,但是我有没有想过如何使级别编号只显示一次,并且在其下方有相应的项目?它仍在打印每个项目上方的级别。谢谢。你能建议我如何让级别编号只显示一次,并在其下方显示相应的项目吗?它仍在打印每个项目上方的级别。对不起,我的错误,更新了代码,现在看到了,只需在循环外打印一次级别1,2谢谢-完美。现在我只需要弄清楚,如果没有属于这些类别的项目,如何让这些级别不打印。再次更新:D,如果它解决了您的问题,请让我知道