我有n个字典的元组.我想从包含特定键值对的该元组中检索字典.
我正在尝试尽可能地优雅地做到这一点,我认为列表理解是要走的路-但这不是基本的列表理解,我有点迷失了.
这显示了我正在尝试执行的操作的想法,但是当然不起作用:
# 'data' is my n-tuple
# 'myKey' is the key I want
# 'myValue is the value I want
result = [data[x] for dictionary in data if (data[x][myKey]) == myValue)][0]
# which gives this error:
NameError: global name 'x' is not defined
在此之前,我尝试过类似的操作(错误是有道理的,并且我理解):
result = [data[x] for x in data if (data[x][myKey] == myValue)][0]
# which gives this error:
TypeError: tuple indices must be integers, not dict
这是时候使用嵌套理解吗?看起来会是什么样子,而用循环和条件条件将其写出来会更简单吗?
另外,还有一个问题-除了最后打[0]之外,还有其他更Python的方法来获取列表中的第一个(或唯一)元素吗?
解决方法:
如果您有一个称为data的字典元组,则可以执行以下操作:
>>> data = ({'fruit': 'orange', 'vegetable':'lettuce'}, {'football':'arsenal', 'basketball':'lakers'}, {'england':'london', 'france':'paris'} )
>>> myKey = "football"
>>> myValue = "arsenal"
>>> [d for d in data if (myKey, myValue) in d.items()][0]
{'basketball': 'lakers', 'football': 'arsenal'}
这将使用列表推导返回元组中包含myKey和myValue的第一个字典(删除[0]以获取所有字典).