Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用旧词典中的条目创建和填充新词典_Python_Dictionary - Fatal编程技术网

Python 使用旧词典中的条目创建和填充新词典

Python 使用旧词典中的条目创建和填充新词典,python,dictionary,Python,Dictionary,如果我这样做,我会得到一个错误,说KeyError:last key of old dict 还有其他方法吗?您试图访问一个尚不存在的密钥;您的newDict为空 如果要使用列表作为值填充newDict,需要首先将键设置为空列表。这样做需要: 这将首先将键设置为[],除非该键已存在于字典中 但是,由于旧词典中的所有键都是唯一的,您也可以只使用: for key,value in oldDict.items(): if value compared to something else is

如果我这样做,我会得到一个错误,说
KeyError:last key of old dict


还有其他方法吗?

您试图访问一个尚不存在的密钥;您的
newDict

如果要使用列表作为值填充
newDict
,需要首先将键设置为空列表。这样做需要:

这将首先将
键设置为
[]
,除非该键已存在于字典中

但是,由于旧词典中的所有键都是唯一的,您也可以只使用:

for key,value in oldDict.items():
    if value compared to something else is true:
        newDict.setdefault(key, []).append(value)
也就是说,除非您完全困惑,只想直接设置值,而不是创建列表:

for key,value in oldDict.items():
    if value compared to something else is true:
        newDict[key] = [value]
最后但并非最不重要的一点是,您可以完全以以下方式创建新词典:


您试图访问一个尚不存在的密钥;您的
newDict

如果要使用列表作为值填充
newDict
,需要首先将键设置为空列表。这样做需要:

这将首先将
键设置为
[]
,除非该键已存在于字典中

但是,由于旧词典中的所有键都是唯一的,您也可以只使用:

for key,value in oldDict.items():
    if value compared to something else is true:
        newDict.setdefault(key, []).append(value)
也就是说,除非您完全困惑,只想直接设置值,而不是创建列表:

for key,value in oldDict.items():
    if value compared to something else is true:
        newDict[key] = [value]
最后但并非最不重要的一点是,您可以完全以以下方式创建新词典:


只需执行此操作,而不是追加

def makeNewDictFromOld(oldDict):
    return {key: value for key, value in oldDict.items()
            if value compared to something else is true}

只需执行此操作,而不是追加

def makeNewDictFromOld(oldDict):
    return {key: value for key, value in oldDict.items()
            if value compared to something else is true}

字典中没有“最后一个”键。字典是无序的。您将获得中第一个键的
KeyError
。对于给定的
oldDict
,还不清楚您希望
newDict
变成什么。您希望这些值是列表吗?如何收集每个键的值?既然所有的
键都是唯一的,为什么要首先使用列表呢?字典中没有“last”键。字典是无序的。您将获得中第一个键的
KeyError
。对于给定的
oldDict
,还不清楚您希望
newDict
变成什么。您希望这些值是列表吗?如何收集每个键的值?既然所有的
键都是唯一的,为什么要首先使用列表呢?我不完全清楚你的意思。字典中的每个“行”的键和值都不同。它是一个日期作为键,具有与该日期对应的值。我会在for循环中使用
newDict.setdefault(key,[]).append(value)
,它也会填充字典的其余部分=@Gurkmeja101:使用它而不是
newDict[key].append(value)
表达式,所以在循环中。感谢您的帮助。我很抱歉你不得不猜测我需要什么帮助。在词典的使用上犯了一个错误。我不完全清楚你的意思。字典中的每个“行”的键和值都不同。它是一个日期作为键,具有与该日期对应的值。我会在for循环中使用
newDict.setdefault(key,[]).append(value)
,它也会填充字典的其余部分=@Gurkmeja101:使用它而不是
newDict[key].append(value)
表达式,所以在循环中。感谢您的帮助。我很抱歉你不得不猜测我需要什么帮助。在字典的工作方式上犯了一个错误。@Gurkmeja101:那你为什么要首先使用
.append()
?你把它和列表混淆了吗?如果您给了我们一个预期的输出,它会有帮助,那么从一开始它就会更清晰,我们就不必在这里猜测了。@MartijnPieters是的,我完全确定该使用什么。我以前没有用过字典,所以给您带来不便,我很抱歉。谢谢你的帮助@Gurkmeja101:那你为什么要首先使用
.append()
?你把它和列表混淆了吗?如果您给了我们一个预期的输出,它会有帮助,那么从一开始它就会更清晰,我们就不必在这里猜测了。@MartijnPieters是的,我完全确定该使用什么。我以前没有用过字典,所以给您带来不便,我很抱歉。谢谢你的帮助!