2015-04-06 66 views
1

我試圖只將值>> n的鍵添加到我的列表中,但是我無法給鍵賦予參數。如何將具有定義值的字典鍵添加到列表

n = 2 
dict = {'a': 1, 'b': 2, 'c': 3} 
for i in dict: 
    if dict[i] >= n: 
    list(dict.keys([i]) 

當我嘗試這個,它告訴我我不能給.keys()一個參數。但是如果我刪除了參數,所有的鍵都被添加了,不管值是多少

任何幫助?

回答

0

嘗試使用filter

filtered_keys = filter(lambda x: d[x] >= n, d.keys()) 

或者使用list comprehension

filtered_keys = [x for x in d.keys() if d[x] >= n] 

在你的代碼中的錯誤是,dict.keys回報所有鍵,作爲文檔提到:

返回dicti的副本onary的鍵列表。

你想要的是一次一個關鍵的列表理解給你。此外,在進行過濾時,基本上可以考慮使用適當的方法(filter)。

2

您不需要調用.keys()方法dict,因爲您已在使用for循環迭代data_dict的鍵。

n = 2 
data_dict = {'a': 1, 'b': 2, 'c': 3} 
lst = [] 
for i in data_dict: 
    if data_dict[i] >= n: 
    lst.append(i) 

print lst 

結果:

['c', 'b'] 

您也可以做到這一點使用list comprehension

result = [k for k, v in data_dict.iteritems() if v >= 2] 
print result 

你應該閱讀:Iterating over Dictionaries

相關問題