如何将具有已定义值的字典键添加到列表中

时间:2015-04-06 06:14:22

标签: python list for-loop dictionary

我试图只在我的列表中添加值为> = n的键,但是我无法给键提供参数。

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

当我尝试这个时,它告诉我,我不能给.keys()一个参数。但是如果我删除了参数,则无论值是什么,都会添加所有键

任何帮助?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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返回所有键,正如文档所述:

  

返回字典键列表的副本。

你想要的是一次一键,列表理解能给你。此外,在过滤时(基本上就是您所做的),请考虑使用适当的方法(filter)。