我有一个字典,里面有一大堆词条。我只对其中的几个感兴趣。有什么简单的方法可以把其他的都剪掉吗?
当前回答
这只是一个简单的单行函数,带有一个过滤器,只允许现有的键。
data = {'give': 'what', 'not': '___', 'me': 'I', 'no': '___', 'these': 'needed'}
keys = ['give', 'me', 'these', 'not_present']
n = { k: data[k] for k in filter(lambda k: k in data, keys) }
print(n)
print(list(n.keys()))
print(list(n.values()))
输出:
{“给予”:“什么”,“我”:“我”,“这些”:“需要”} ['give', 'me', 'these'] ['what', 'I', 'needed']
其他回答
如果给定字典中没有一个过滤器键,则接受的答案抛出KeyError。
要获得给定字典的副本,只包含允许键中的一些键,一种方法是检查该键是否确实存在于字典推导中给定的字典中:
filtered_dict = { k: old_dict[k] for k in allowed_keys if k in old_dict }
这不会影响性能,因为对字典的查找具有恒定的运行时复杂性。
或者,您可以使用old_dict。获取(k, some_default)来填充缺失的项。
这只是一个简单的单行函数,带有一个过滤器,只允许现有的键。
data = {'give': 'what', 'not': '___', 'me': 'I', 'no': '___', 'these': 'needed'}
keys = ['give', 'me', 'these', 'not_present']
n = { k: data[k] for k in filter(lambda k: k in data, keys) }
print(n)
print(list(n.keys()))
print(list(n.values()))
输出:
{“给予”:“什么”,“我”:“我”,“这些”:“需要”} ['give', 'me', 'these'] ['what', 'I', 'needed']
我们也可以通过稍微更优雅的字典理解来实现这一点:
my_dict = {"a":1,"b":2,"c":3,"d":4}
filtdict = {k: v for k, v in my_dict.items() if k.startswith('a')}
print(filtdict)
构造一个新词典:
dict_you_want = {key: old_dict[key] for key in your_keys}
使用字典理解。
如果你使用的版本缺少它们(如Python 2.6及更早版本),请将其改为dict((key, old_dict[key]) for…)。它是一样的,只是更丑。
注意,与jnnnnn版本不同的是,对于任何大小的old_dicts具有稳定的性能(仅取决于your_keys的数量)。无论是速度还是内存。因为这是一个生成器表达式,所以它一次处理一个项,并且不会查看old_dict的所有项。
把所有东西都移走:
unwanted = set(keys) - set(your_dict)
for unwanted_key in unwanted: del your_dict[unwanted_key]
我们可以这样简单地处理函数:
>>> dict_filter = lambda x, y: dict([ (i,x[i]) for i in x if i in set(y) ])
>>> large_dict = {"a":1,"b":2,"c":3,"d":4}
>>> new_dict_keys = ("c","d")
>>> small_dict=dict_filter(large_dict, new_dict_keys)
>>> print(small_dict)
{'c': 3, 'd': 4}
>>>
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录