从字典打印python

从字典打印python,python,dictionary,Python,Dictionary,我正在尝试编写代码来收集参加活动的人数。根据输入的人数,我会多次询问a)个人姓名,b)他们捐赠的玩具数量。我想把这些信息输入一个字典,我将把它传递给另一个函数。第二个功能将选择捐赠超过20件玩具的个人,将他们的姓名和捐赠玩具的数量打印为“1级”,然后将其他所有人打印为“2级” 我已经检查以确保数据从一个函数正确地传递到另一个函数。我在打印没有[]的捐款金额时遇到问题。此外,它会在每个条目上方打印级别,而不是在级别下方列出条目。换言之,我试图得到: 一级 赛琳娜·戈麦斯50 碧昂丝40 第2级 威

我正在尝试编写代码来收集参加活动的人数。根据输入的人数,我会多次询问a)个人姓名,b)他们捐赠的玩具数量。我想把这些信息输入一个字典,我将把它传递给另一个函数。第二个功能将选择捐赠超过20件玩具的个人,将他们的姓名和捐赠玩具的数量打印为“1级”,然后将其他所有人打印为“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,如果它解决了您的问题,请让我知道