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是的,我完全确定该使用什么。我以前没有用过字典,所以给您带来不便,我很抱歉。谢谢你的帮助!