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