filter()python中的一个dict - 只返回键

时间:2017-01-22 11:27:29

标签: python dictionary

我想过滤一个字典,当我们获得具有特定值的密钥时,我只想从字典中返回密钥。这是我的代码:

def smaller_than(d, value):
    result = filter(lambda x: x[1]<=3, d.items())
    return result

number_key = {35135135: 5, 60103513: 3, 10981179: 2, 18637724 : 4}
number = smaller_than(number_key, 3)
print(number)

我得到的结果如[(60103513,3),(10981179,2)],但我只想得到它[60103513,10981179]。我认为这是一个简单的答案,但我不知道如何做到这一点。

3 个答案:

答案 0 :(得分:2)

您不必将d.items()作为可迭代传递给filter。只需传递dict对象(与dict.keys()相同),并使用 lambda表达式基于dict[key]过滤内容:

>>> number_key = {35135135: 5, 60103513: 3, 10981179: 2, 18637724 : 4}

>>> filter(lambda x: number_key[x]<=3, number_key)
[60103513, 10981179]

答案 1 :(得分:1)

或者,您也可以使用列表理解表达式将字典过滤为:

let x: kilograms = 123;
let y: kilometers = 256;
let z: kilogramsPerKilometer = <number>x / <number>y; // Will downcast `kilograms` and `kilometers` types to `number` and then up-cast types to `kilogramsPerKilometer`

答案 2 :(得分:0)

第一个解决方案,只需添加:

new_list = []
for i in number:
    new_list.append(i[0])

print new_list

第二个解决方案:

def smaller_than(d, value):
    result = filter(lambda x: x[1]<=3, d.items())
    result = map(lambda x: x[0], result)
    return result

number_key = {35135135: 5, 60103513: 3, 10981179: 2, 18637724 : 4}
number = smaller_than(number_key, 3)
print(number)