【发布时间】:2015-01-18 22:18:17
【问题描述】:
我有一本字典:
my_dict = {
'a': {(1,2): True,
(1,3): False},
'b': {(1,4): True,
(2,3): False}
}
字典总是这种形式,但每个“子”字典都有一组不同的键:my_dict['a'][(1,2)] 存在,但这并不意味着 my_dict['b'][(1,2)] 也存在。
我想要一个布尔值列表(无特定顺序):
[True, False, True, False]
我正在尝试使用单个列表推导来完成此操作:
[my_dict[letter][pair] for pair in my_dict[letter] for letter in my_dict]
这会引发错误:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-142-dc1565efcdc8> in <module>()
6 }
7
----> 8 [my_dict[letter][pair] for pair in my_dict[letter] for letter in my_dict]
KeyError: (2, 3)
它似乎在 my_dict['a'] 和 my_dict['b'] 中寻找 (2,3)。我认为我写的理解只会在适当的字典中查找键。
我见过this solution 可以使任何嵌套字典变平。我也知道我可以用命令式循环来暴力破解它。我只是想了解为什么列表理解不能按照我写的方式工作。
【问题讨论】:
标签: python python-2.7 dictionary list-comprehension