[英]How do I delete keys from a dictionary that are shorter than a certain length in python?
我有一本字典,其中包含不同单词长度的键,例如:
d={'longggg':'a', 'short':'b', 'medium':'c', 'shor':'d'}
我想以只包含大于特定长度的键的字典作为结尾。 例如,我只想保留长度为6个字母或更多的条目。 所以我要
new_d={'longggg':'a', 'medium':'c'}.
我试过了
new_d=dict(k,v) for k,v in d.items() if len[k]>=6
和
new_d={}
for k, v in d.items():
if len[k]>=6:
new_d.update({k:v})
以及该代码的许多其他变体,但问题最终出在占用密钥的长度上。
使用Dictionary comprehensions
。 无需对for k in d.keys()
。 只需将for k in d
d.keys()
将返回根本不需要的列表。 (我从Stackoverflow本身中学到了一个教训!)
就像@roganjosh指出的那样,使用len()
而不是len[]
( len()
是一个函数)。 方括号用于在列表和字符串中建立索引。
d={'longggg':'a', 'short':'b', 'medium':'c', 'shor':'d'}
a = {k:d[k] for k in d if len(k)>=6}
print a
输出:
{'medium': 'c', 'longggg': 'a'}
您可以尝试以下方法:
d={'longggg':'a', 'short':'b', 'medium':'c', 'shor':'d'}
final_d = {a:b for a, b in d.items() if len(a) >= 6}
输出:
{'medium': 'c', 'longggg': 'a'}
len
是Python中的内置函数,因此使用括号(而不是方括号运算符)。
第一个解决方案的主要问题是,您要为每个k, v
创建一个单独的字典。
如果您修复len
函数调用,您的第二个解决方案应该可以工作,但是我会将new_d.update({k:v})
重写为new_d[k] = v
,因为这是使用Python字典的标准方法。
我可以告诉你,这是新手,而对于像这样的初学者来说,最好的资源将是Python文档而不是Stack Overflow。 您还应该尝试将错误输出复制并粘贴到Google。 您也许可以更快地解决问题,并且可以获得更有意义的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.