如何在字典中将值写为列表

时间:2015-02-18 18:01:50

标签: python dictionary

到目前为止,我的代码是

class_1={"Bob":[5,3,4,5,6,7],"Jack":[4],"Rob":[7]}
class_2={"Alex":[5],"Steve":[4],"John":[7]}
class_3={"Adrien":[5],"Morgan":[3]}

score=int(input("Enter a number"))
name=input("What is your name?")
userClass=int(input("class?"))
if userClass ==1:
    if name in class_1:
        class_1[name].append(score)
    else:
        class_1[name]=score
elif userClass ==2:
    if name in class_2:
        class_2[name].append(score)
    else:
        class_2[name]=score
elif userclass ==3:
    if name in class_3:
        class_3[name].append(score)
    else:
        class_3[name]=score
问题是每当我输入一个不在任何词典中的名称时,它会将数字(值)添加为整数而不是列表格式。这使我无法订购分数,因为它们的格式不同。

请帮帮我!我已经尝试了几个小时。

2 个答案:

答案 0 :(得分:3)

一个简单的解决方案是只在列表中插入一个列表:

if userClass ==1:
    if name in class_1:
        class_1[name].append(score)
    else:
        class_1[name]=[score]

但是使用default dicts可能会更加pythonic并解决这个问题。 E.g。

from collections import defaultdict
class_1 = defaultdict(list)
for name, score in [("Bob", [5,3,4,5,6,7]), [...]]:
    class_1[name].append(score)

答案 1 :(得分:1)

您需要先设置一个空列表,然后才能追加它。尝试将class_1[name]=score更改为class_1[name]=[score]。这将创建一个包含一个整数元素的列表,然后您可以将其追加到该列表中。