如何从字典中删除短于python中某个长度的键?

时间:2017-10-19 18:49:14

标签: python dictionary key string-length

我有一个包含不同字长的字典,例如:

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

你可以试试这个:

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

答案 2 :(得分:0)

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

您的第一个解决方案的重大问题(除其他事项外)是您为每个k, v创建单独的字典。

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

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