📑
Pythonでリスト内辞書の特定の要素を削除する
やりたいこと
下記のようなリスト内にある辞書の特定の要素を削除する。
今回はWife
キーの要素を削除する。(天さんごめん。)
[
{
"Earth":[
{"Name": "Goku", "Race": "Saiyan","Wife": "ChiChi"},
{"Name": "Piccolo", "Race:": "Namekian"},
{"Name": "Krillin", "Race": "Earthling", "Wife": "Android18"}
],
"KingKai":[
{"Name": "Yamcha", "Race": "Earthling"},
{"Name": "Tien", "Race": "Earthling", "Wife": "Launch"},
{"Name": "Chiaotzu", "Race": "Earthling"}
]
}
]
実装
- まずlistから対象の辞書を参照する。
- 参照した辞書の消したいキー(ここでは
Wife
キー)を指定してdel
で削除する。
list = [
{
"Earth":[
{"Name": "Goku", "Race": "Saiyan","Wife": "ChiChi"},
{"Name": "Piccolo", "Race:": "Namekian"},
{"Name": "Krillin", "Race": "Earthling", "Wife": "Android18"}
],
"KingKai":[
{"Name": "Yamcha", "Race": "Earthling"},
{"Name": "Tien", "Race": "Earthling", "Wife": "Launch"},
{"Name": "Chiaotzu", "Race": "Earthling"}
]
}
]
for list_item in list:
if "Earth" in list_item:
earth = list_item["Earth"]
for earth_item in earth:
if "Wife" in earth_item:
del earth_item["Wife"]
if "KingKai" in list_item:
kai = list_item["KingKai"]
for kai_item in kai:
if "Wife" in kai_item:
del kai_item["Wife"]
pprint.pprint(list)
結果
[{'Earth': [{'Name': 'Goku', 'Race': 'Saiyan'},
{'Name': 'Piccolo', 'Race:': 'Namekian'},
{'Name': 'Krillin', 'Race': 'Earthling'}],
'KingKai': [{'Name': 'Yamcha', 'Race': 'Earthling'},
{'Name': 'Tien', 'Race': 'Earthling'},
{'Name': 'Chiaotzu', 'Race': 'Earthling'}]}]
みんな独り身になりました。
備考
-
del
は存在しないキーを指定するとKeyErrorになるので気をつけて。 -
earth_item
やkai_item
はlistの要素の参照なので、削除したものを代入し直さなくても大丈夫。(プログラミング久方振りで基本的なことまで忘れてました...)
Discussion