我正在尝试创建一个连续的排行榜,每个人都从一个点开始,如果他们有所建树,我会添加到关键点上。我不确定词典是最好的方法,因此绝对欢迎提出建议。
我尝试使用列表开头,但是由于列表中包含列表,因此字典似乎更适合我的需求
myDict = {'person1' : 1 , 'person2' : 1 , 'person3' : 1}
如果person1要做某事,我希望将其键更改为2。我需要增加键,而不是分配特定的键。另外,我还将不断向dict中添加条目,我需要将其默认值设为1。
编辑:克里斯有一个超级有用的建议,即使用collections.defaultdict,以便调用不在dict中的键会添加它而不是返回keyerror
答案 0 :(得分:0)
只需通过其键访问即可在python字典中添加,更改或重新分配值
myDict[key] = value
在您的情况下:
myDict["person1"] = 2 # Reassignment or changing
myDict["person1"] += 1 # Increementing
如果键不存在,则增加将是一个问题。在这种情况下,您需要检查密钥是否存在。
if myDict["person5"]:
myDict["person5"] += 1
else:
myDict["person5"] = 1
引用https://docs.python.org/3/tutorial/datastructures.html#dictionaries
答案 1 :(得分:0)
您可以按以下方式更新字典:
>>> myDict = {'person1': 1, 'person2': 1}
>>> myDict['person7'] = 2
您可能还想调查
import collections
myDict = collections.defaultdict(lambda: 1)
myDict['person7'] += 1
因为这将在初次读取未设置的值时自动将其重置为1
。
答案 2 :(得分:0)
除非您想执行类似按分数对玩家进行排序的操作,否则字典似乎是一个不错的选择。 (您可以进行排序,但必须有一种解决方法,因为字典仅由其键索引)
否则,您可以执行以下操作来更新分数
myDict = {}
person = '<person_name>'
# in case the person did something
if person in myDict:
myDict[person] += 1
else:
myDict[person] = 1