你不能这么做,但如果你将你的钥匙“升级”到namedtuples,你可以关闭它。我使用'kind'作为named中第一项的名称,因为object
是一个内置类型,尽管我们可以在这里安全地使用它,但我认为它会使代码有点混乱。
from collections import namedtuple
d = { ('car', 'blue') : 24,
('car', 'red'): 5,
('plant', 'green'): 12,
('box', 'blue'): 3
}
Thing = namedtuple('Thing', ('kind', 'color'))
d = {Thing(*key): count for key, count in d.items()}
print(d)
lst = [count for key, count in d.items() if key.color == 'blue']
print(lst)
lst = [count for key, count in d.items() if key.kind == 'car']
print(lst)
输出
{Thing(kind='car', color='blue'): 24, Thing(kind='car', color='red'): 5, Thing(kind='plant', color='green'): 12, Thing(kind='box', color='blue'): 3}
[24, 3]
[24, 5]
其实,你真的不需要 namedtuples,但我认为他们使它更好一点。 ;)
d = { ('car', 'blue') : 24,
('car', 'red'): 5,
('plant', 'green'): 12,
('box', 'blue'): 3
}
lst = [count for (kind, color), count in d.items() if color == 'blue']
print(lst)
'[计数(对象,颜色),计数d.items()如果颜色== '蓝色']'? – vaultah
'[d [物体,颜色]为物体,颜色为d如果颜色=='蓝色']' –