まだ存在しないキーにアクセスしようとしています。 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}
の辞書には「最後の」キーはありませんこれを行います。辞書は順序付けられていません。最初の**キーの 'KeyError'を['任意の辞書順'で取得します(https://stackoverflow.com/questions/15479928/why-is-the-order-in-python-dictionaries-任意セット)。 –
与えられた 'oldDict'に対して、' newDict'がどんなものになるのかははっきりしません。あなたは値がリストであると期待していますか?キーごとに値はどのように収集されますか?とにかくすべての 'キー'がユニークであるときにリストを最初に使うのはなぜですか? –