Rol*_*Bly 1 python dictionary list
(Python 2.x)一个只有唯一键值对的dicts列表,按名称和名称进行alffabetically排序,名称也是唯一的:
dictlist = [
{'name': 'Monty', 'has': 'eggs'},
{'name': 'Terry', 'has': 'bacon'}
]
Run Code Online (Sandbox Code Playgroud)
我希望通过名字得到给定名称.以下作品.
names = ['Monty', 'Terry']
print dictlist[names.index('Terry')]['has']
Run Code Online (Sandbox Code Playgroud)
我创建了一个并行列表,其名称与dictlist中的名称顺序相同,因此我可以使用列表的顺序.(我可以填补names一个for循环,但在这里,这是不相关).
从这里,除其他外,我知道我可以做到这一点:
print next((d['has'] for d in dictlist if d['name'] == 'Terry'), None)
Run Code Online (Sandbox Code Playgroud)
但是如果dictlist没有按名称排序,那就更好了.
所以我想知道是否有更简洁的方法来做到这一点,最好是一个至少与第一种方法一样可读的方法?
我根本不会使用列表.我会用字典代替.
dictlist = {
'Monty': {'has': 'eggs'},
'Terry': {'has': 'bacon'}
}
Run Code Online (Sandbox Code Playgroud)
这允许您按名称查找值,如下所示: dictlist['Monty']['has']
如果你必须使用一个列表,那么我认为你有一个很好的解决方案.