Mto*_*heM 3 python dictionary python-3.x
我有一本大字典,但我只需要使用其中的一些数据。如何仅提取我想要的数据对并使用所选数据构建新的数据对?
{'index': 325, 'name': 'Zombie', 'size': 'Medium', 'type': 'undead' ... }
Run Code Online (Sandbox Code Playgroud)
假设我只想从这本字典中获取name
和,type
如下所示:
{'name': 'Zombie', 'type': 'undead'}
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?我可以删除不需要使用的元素del d[key]
,但这似乎效率很低,并且如果稍后添加更多数据,则不会可靠。
我想制作一个较小的字典的原因是这样我可以像这样将数据直接加载到我的类中
Entity(**index[enemy_id])
Run Code Online (Sandbox Code Playgroud)
但如果数据量超过了类所能容纳的数量,它就不起作用。
不需要迭代整个字典,只需过滤掉你想要的键:
>>> d = {'index': 325, 'name': 'Zombie', 'size': 'Medium', 'type': 'undead'}
>>> keys = ['name', 'type']
>>> {key: d.get(key) for key in keys}
{'name': 'Zombie', 'type': 'undead'}
Run Code Online (Sandbox Code Playgroud)
在这里使用dict.get()
还可以防止KeyError
在键不存在时引发,而只是返回None
。
如果你想忽略中不存在的键d
,那么你可以这样做:
{key: d[key] for key in keys if key in d}
Run Code Online (Sandbox Code Playgroud)