2017-10-12 138 views
0

我想從字典中刪除某些值並將其返回。 例如,如果dict包含一個長度小於6的字符串,它將從字典中刪除。我如何迭代字典並將其返回到編輯狀態?Python - 從字典中刪除某些值,然後返回它

+1

如果長度值小於6,應刪除整個鍵值。 –

+0

對於像這樣的任務,你不刪除項目,你創建一個新的詞典覆蓋原來的。 – abccd

+0

嗨,大家好,我的意思是我如何去掉價值而不是關鍵。說關鍵有多個值,但我只想刪除其中的一個? – verdy

回答

0

好吧,如果你只是移除的長度小於6個值,所有你需要的是這樣的:

d = {'a': 'asdfasdf', 'b': 'asdf'} 

while True: 
    flag = True 
    for i in d: 
     if len(d[i]) < 6: 
      del d[i] 
      flag = False 
      break 
    if flag: 
     break 

print d 

{'a': 'asdfasdf'} 
+1

這可能會簡單得多。 '>>> {k:v for k,v in d.items()if len(v)<6}'== '{'b':'asdf'}' –

0

與字典工作時,它是很好的使用items()

讓考慮d = {1: "myname", 2:"mynamex", 3:"mynamey",4:"name"}

for key, value in d.items(): 
    if len(value) < 6: 
     del d[key] 
print(d) 

答:字符串少於6個字符被刪除

{1: 'myname', 2: 'mynamex', 3: 'mynamey'} 

注:

的Python 2:

for key, value in d.iteritems(): 

的Python 3:

for key, value in d.items() 
0

我們可以使用單迴路做,

def doAct(s): 
    for key in s.keys(): 
     if len(s[key]) < 6: 
     del s[key] 
    return s 

如果使用for key in s ,y你會得到錯誤RuntimeError: dictionary changed size during iteration

+0

感謝Paul,更新:) – Kajal

0

這可以在一個單一的線端進行與所謂字典理解

{k:v for k,v in d.items() if len(v)<6} 

內部,它會解開到一個週期,但它更容易和更小的空間,使一個錯字。 您可以在循環中使用不同的條件,甚至可以爲中。