使用Python列表理解从嵌套元组字典结构检索数据

我有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]以获取所有字典).

上一篇:python-在元组上分配字符串


下一篇:如何将2个简短列表中的元素追加到另一个大元组列表中?