2014-01-23 36 views
0

讓用戶能夠輸入列表(或單數)號碼以從字典中刪除字符串密鑰條目的最佳方式是什麼?用戶列表以從字典中刪除密鑰

到目前爲止,這是我的位置。

我的字典刪除值(字典生成,因此會有所不同)。

d = {'Seven': 22, 'Six': 0, 'Three': 35, 'Two': 0, 'Four': 45, 'Five': 34, 'Eight': 0} 

1)那麼如何獲得輸入是我的第一個查詢。這是我的嘗試,但失敗了。

>>> s = raw_input('1 2 3 4') 
1 2 3 4 
>>> numbers = map(str, s.split()) 
>>> numbers 
[] 

>>> s = raw_input('1 2 3 4') 
1 2 3 4 
>>> numbers = map(int, s.split()) 
>>> numbers 
[] 

2)我該如何將ints轉換爲word形式?這裏範圍是有限的,每個字典永遠不會超過20個條目。 所以我最初的想法是創建一個解釋信息的關鍵。

e = {'One': 1, 'Two': 2, 'Three': 3, 'Four': 4} 

而且這個工作並不像預期的那樣只刪除了一個條目。

>>> e = {'One': 1, 'Two': 2, 'Three': 3, 'Four': 4} 
>>> {k:v for k,v in e.items() if v!=(1 and 3)} 
{'Four': 4, 'Two': 2, 'One': 1} 

我的意圖是從d中刪除值而不是e。它也不實用,因爲我不知道用戶將輸入多少條目,所以使用'和'語句似乎是錯誤的。

回答

2

首先,raw_input的參數僅供顯示。您需要自行輸入:

>>> s = raw_input("Enter a sequence of number: ") 
Enter a sequence of number: 1 2 3 4 
>>> print s 
1 2 3 4 

現在,你可以只使用一個列表來映射它:

m = ['1':'One', '2':'Two', '3':'Three', .., '10':'Ten'] 

編輯下面是如何將它轉換:

e = [v for k, v in m.items() if k in s] 

第三,字典理解(或一般的「理解」)並不是要修改現有的對象,而是要創建一個新的對象。你可以得到的最接近的是讓它像一個過濾器,並將結果重新分配回d

d = {k:v for k, v in d.items() if k not in e} 
+0

你是如何轉換用戶輸入s到è? – sayth

+0

@sayth通過一些更改更新了我的答案。 – aIKid

+0

有關這似乎並不工作>>> s = raw_input(「輸入數字:」) 輸入數字:1 2 3 4 >>> s '1 2 3 4' >>> numbers = map (int,s.split()) >>> numbers [1,2,3,4] >>> m = ['One','Two','Three','Four','Five' ,'Six','Seven','Eight'] >>> e = [i for m in if if in s] >>> e [] >>> e = [i for i in m如果我在號碼] >>> e [] – sayth

相關問題