繁体   English   中英

如何从字典中删除比python中特定长度短的键?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM