2017-10-19 75 views
2

我有一個具有不同字長的鍵,例如一個詞典:如何刪除短於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}) 

與該代碼的許多其他變化一起,但問題最終採取了關鍵的長度爲。

+2

'new_d = {k:v for k,v in d.items()if len(k)> = 6}'。你在'len [k]'中使用的方括號是用於索引的,你反而想調用這個函數,所以使用圓括號。 – roganjosh

+1

哪個版本的Python? d.items()僅適用於版本3+ –

+1

@DanielGale不正確。我發佈的評論在我發佈之前已在Python 2中進行了測試。 – roganjosh

回答

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

你可以試試這個:

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

len是在Python內置函數,因此使用括號(未方括號運算符)。

您的第一個解決方案的最大問題(其中包括)您正在爲每個k, v創建一個單獨的字典。如果您修復len函數調用

你的第二個解決辦法應該工作,但我想重寫new_d.update({k:v})new_d[k] = v,因爲這是用Python字典的標準方式。

我可以告訴你是新的,像這樣的初學者問題的最佳資源將是Python documentation而不是Stack Overflow。您還應該嘗試將錯誤輸出複製並粘貼到Google。你可能會更快地解決你的問題,你會得到更有意義的答案。

相關問題