簡體   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