def makeNewDictFromOld(oldDict):
newDict = {}
for key,value in oldDict.items():
if value compared to something else is true:
newDict[key].append(value)
return newDict
如果我这样做,我会收到错误KeyError: last key of old dict
。
还有其他办法吗?
答案 0 :(得分:2)
您正在尝试访问尚不存在的密钥;您的newDict
为空。
如果要使用列表作为值填充newDict
,则需要先将密钥设置为空列表。使用dict.setdefault()
:
for key,value in oldDict.items():
if value compared to something else is true:
newDict.setdefault(key, []).append(value)
这会将key
设置为[]
第一个,除非该密钥已存在于字典中。
但是,由于旧词典中的所有键都是唯一的,因此您也可以使用:
for key,value in oldDict.items():
if value compared to something else is true:
newDict[key] = [value]
也就是说,除非你完全感到困惑,只是想直接设置值,而不是创建列表:
for key,value in oldDict.items():
if value compared to something else is true:
newDict[key] = value
最后但并非最不重要的是,您可以完全在dictionary comprehension中创建新词典:
def makeNewDictFromOld(oldDict):
return {key: value for key, value in oldDict.items()
if value compared to something else is true}
答案 1 :(得分:1)
只需执行此操作而不是追加
def makeNewDictFromOld(oldDict):
newDict = {}
for key,value in oldDict.items():
if True:
newDict[key] = value #assign directly instead of append
return newDict
dict_ = {"name":"name1","age":35}
print makeNewDictFromOld(dict_)