我試圖只將值>> n的鍵添加到我的列表中,但是我無法給鍵賦予參數。如何將具有定義值的字典鍵添加到列表
n = 2
dict = {'a': 1, 'b': 2, 'c': 3}
for i in dict:
if dict[i] >= n:
list(dict.keys([i])
當我嘗試這個,它告訴我我不能給.keys()一個參數。但是如果我刪除了參數,所有的鍵都被添加了,不管值是多少
任何幫助?
我試圖只將值>> n的鍵添加到我的列表中,但是我無法給鍵賦予參數。如何將具有定義值的字典鍵添加到列表
n = 2
dict = {'a': 1, 'b': 2, 'c': 3}
for i in dict:
if dict[i] >= n:
list(dict.keys([i])
當我嘗試這個,它告訴我我不能給.keys()一個參數。但是如果我刪除了參數,所有的鍵都被添加了,不管值是多少
任何幫助?
嘗試使用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
)。
您不需要調用.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。