【问题标题】:How to append two dictionaries using user input but the second dictionary should be the value and First dictionary should be key如何使用用户输入附加两个字典,但第二个字典应该是值,第一个字典应该是键
【发布时间】:2021-11-06 08:49:47
【问题描述】:
no_sub = int(input("Enter Number Of Subjects : "))`
no_mark = int(input("Enter how many student's marks do you want to add : "))

for i in range (0,no_sub):
    sub_name = input("Enter Subject Names : ")

    for j in range (0,no_mark):
        stud_marks = input("Enter student's Marks : ")
        marks[sub_name] = stud_marks

print(marks)

在这个程序中,预期的输出是{'Phy':[65,66,70,45],'Eng':[90,96,89,76],'Chem':[67,45,56,70]},但是当我尝试使用用户输入合并这些字典时,我得到了这个输出

Enter Number Of Subjects : 3
Enter how many student's marks do you want to add : 4
Enter Subject Names : Phy
Enter student's Marks : 46
Enter student's Marks : 45
Enter student's Marks : 27
Enter student's Marks : 67
Enter Subject Names : Eng
Enter student's Marks : 44
Enter student's Marks : 23
Enter student's Marks : 75
Enter student's Marks : 81
Enter Subject Names : Maths
Enter student's Marks : 68
Enter student's Marks : 35
Enter student's Marks : 36
Enter student's Marks : 86
{'Phy': '67', 'Eng': '81', 'Maths': '86'}

请帮忙,我正在努力解决这个时间问题

【问题讨论】:

    标签: python loops dictionary for-loop append


    【解决方案1】:

    而不是marks[sub_name] = stud_marks 使用列表并在此处附加输入:

    no_sub = int(input("Enter Number Of Subjects : "))
    no_mark = int(input("Enter how many student's marks do you want to add : "))
    
    marks = {}
    for i in range(no_sub):
        sub_name = input("Enter Subject Names : ")
    
        for j in range(no_mark):
            stud_marks = input("Enter student's Marks : ")
            marks.setdefault(sub_name, []).append(int(stud_marks))
    
    print(marks)
    

    打印:

    Enter Number Of Subjects : 2
    Enter how many student's marks do you want to add : 2
    Enter Subject Names : A
    Enter student's Marks : 1
    Enter student's Marks : 2
    Enter Subject Names : B
    Enter student's Marks : 3
    Enter student's Marks : 4
    {'A': [1, 2], 'B': [3, 4]}
    

    【讨论】:

    • 非常感谢兄弟,我确实尝试先将用户输入附加到列表中,然后使用迭代将列表转换为字典,然后复制该字典并保存其输入,然后尝试附加它,但在这里,你只改变了 1 行
    【解决方案2】:

    您可以轻松地生成一个默认字典并继续附加到它。

    from collections import defaultdict
    
    def add_marks():
      # create a defaultdict dt.
      dt = defaultdict(list)
      for i in range(3):
        temp = input()
        if temp.isalpha():
          # print(temp)
          for j in range(2):
            dt[temp].append(int(input()))
            # print(dt)
        else:
          print("please only enter letters for subjects names")
          return dt
      return dt
    
    print(add_marks())
    
    
    Output:
    
    defaultdict(list, {'math': [80, 90], 'phy': [60, 70], 'social': [87, 96]})
    

    【讨论】:

    • 谢谢,这对我以后的项目很有帮助
    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 2021-03-09
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多