(Python 2.x)只有唯一键值对的字典列表,按名称字母顺序排序,名称也是唯一的:
dictlist = [
{'name': 'Monty', 'has': 'eggs'},
{'name': 'Terry', 'has': 'bacon'}
]
我想通过名称获取给定名称的内容。以下作品。
names = ['Monty', 'Terry']
print dictlist[names.index('Terry')]['has']
我已经制作了一个平行列表,其名称的顺序与 dictlist 中的名称顺序相同,因此我可以利用列表的顺序。 (我可以用 for 循环填充 names,但这与这里无关)。
来自 here ,除其他外,我知道我可以做到这一点:
print next((d['has'] for d in dictlist if d['name'] == 'Terry'), None)
但只有当 dictlist 不按名称排序时才会更好。
所以我想知道是否有更简洁的方法来执行此操作,最好是至少与第一种方法一样可读的方法?
请您参考如下方法:
我根本不会使用列表。我会改用字典。
dictlist = {
'Monty': {'has': 'eggs'},
'Terry': {'has': 'bacon'}
}
这允许您按名称查找值,如下所示:dictlist['Monty']['has']
如果您必须使用列表,那么我认为您有一个很好的解决方案。
