二维字典搜索

2024-04-19 21:04:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本二维字典代表人。下面是一个例子:

>>> people = {'pk1':{'firstname':'Brian', 'age':42}, 'pk2':{'firstname':'Alex',
'age':50}}

可以看到,每个条目中都有一个主键。然后,每个人都指向一本词典,其中包含有关某个人的信息。我如何搜索整个“人物”词典以返回所有年龄在42岁的人?在


Tags: 信息age字典条目firstnamepeople例子词典
3条回答

如果您想使用一个更通用的函数来执行各种搜索,您可以使用类似于:

def findPeople(people, filter):
    ret = {}
    for k, v in people.items():
        if filter(v):
            ret[k] = v
    return ret

那么对于年龄==42,你可以这样称呼它:

^{pr2}$

使用list comprehension。在

>>> [p for p in people if people[p]['age'] == 42]
['pk1']

如果需要主键:

>>> [{id: value} for id, value in people.iteritems() if value['age'] == 42]
[{'pk1': {'age': 42, 'firstname': 'Brian'}}]

如果你没有:

^{pr2}$

相关问题 更多 >