Python A「;蟒蛇的;检查字典中是否已存在密钥的策略

Python A「;蟒蛇的;检查字典中是否已存在密钥的策略,python,dictionary,key,Python,Dictionary,Key,我经常处理异构数据集,并在python例程中将它们作为字典获取。我通常面临的问题是,我要添加到字典中的下一个条目的键已经存在。 我想知道是否存在一种更“pythonic”的方法来完成以下任务:检查密钥是否存在,并创建/更新字典中相应的pair-key项 myDict = dict() for line in myDatasetFile: if int(line[-1]) in myDict.keys(): myDict[int(line[-1])].append([line

我经常处理异构数据集,并在python例程中将它们作为字典获取。我通常面临的问题是,我要添加到字典中的下一个条目的键已经存在。 我想知道是否存在一种更“pythonic”的方法来完成以下任务:检查密钥是否存在,并创建/更新字典中相应的pair-key项

myDict = dict()
for line in myDatasetFile:
   if int(line[-1]) in myDict.keys():
        myDict[int(line[-1])].append([line[2],float(line[3])])
   else:
        myDict[int(line[-1])] = [[line[2],float(line[3])]]

Python遵循这样一种理念:请求原谅比获得允许更容易

因此,真正的蟒蛇方式应该是:

try:
    myDict[int(line[-1])].append([line[2],float(line[3])])
except KeyError:
    myDict[int(line[-1])] = [[line[2],float(line[3])]]
供参考:


当您收到
键错误时,尝试捕获
异常

myDict = dict()
for line in myDatasetFile:
   try:
        myDict[int(line[-1])].append([line[2],float(line[3])])
   except KeyError:
        myDict[int(line[-1])] = [[line[2],float(line[3])]]
使用一个

另外,永远不要使用d.keys()中的
东西。
。在Python2中,这将创建一个键列表,并一次遍历一个项来查找键,而不是使用基于哈希的查找。在Python3中,它并没有那么可怕,但它仍然是冗余的,并且仍然比正确的方式慢,这就是d中的
东西
这就是它的目的

setdefault(key[,default])

如果键在字典中,则返回其值。如果不是,则插入值为default的键并返回default。默认值为“无”

例如:

>>> d={}
>>> d.setdefault('a',[]).append([1,2])
>>> d
{'a': [[1, 2]]}
或使用:

myDict = dict()
for line in myDatasetFile:
   myDict.setdefault(int(line[-1]),[]).append([line[2],float(line[3])])

Kasra在
setdefault
方面领先你约三分钟。我建议删除你的答案,因为它没有添加任何新内容。流行的词是pythonic。
myDict = dict()
for line in myDatasetFile:
   myDict.setdefault(int(line[-1]),[]).append([line[2],float(line[3])])