如何从 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})

以及该代码的许多其他变体,但问题最终在于获取密钥的长度。

你可以试试这个:

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'}

使用Dictionary comprehensions。不需要做 for k in d.keys()。只需使用 for k in d,因为 d.keys() 将 return 一个根本不需要的列表。 (我从 Whosebug 本身学到的一课!!)

正如@roganjosh 指出的那样,使用 len() 而不是 len[]len() 是一个函数)。方括号用于在 say、列表和字符串中进行索引。

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'}

len 是 Python 中的内置函数,因此使用圆括号(不是方括号运算符)。

第一个解决方案的大问题(除其他外)是您要为每个 k, v.

创建一个单独的字典

如果您修复 len 函数调用,您的第二个解决方案应该可以工作,但我会将 new_d.update({k:v}) 重写为 new_d[k] = v,因为这是使用 Python 的标准方法]字典.

我可以告诉您您是新手,对于此类初学者问题的最佳资源是 Python documentation 而不是 Stack Overflow。您还应该尝试将错误输出复制并粘贴到 Google。您可能能够更快地解决问题,并获得更有意义的答案。