我有一个包含不同字长的字典,例如:
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})
以及该代码的许多其他变体,但问题最终在于占用密钥的长度。
答案 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。您可能能够更快地解决问题,并获得更有意义的答案。