使用旧条目创建和填充新字典

时间:2016-05-03 08:16:04

标签: python dictionary

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

还有其他办法吗?

2 个答案:

答案 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_)