我有一个像这样的 dict:
{
('America', 25, 'm', 'IT'): 10000,
('America', 22, 'm', 'IT'): 8999,
('Japan', 24, 'f', 'IT'): 9999,
('Japan', 23, 'f', 'IT'): 9000
}
现在,在本例中,我想使用键 ('America', 'm', 'IT') 获取所有结果。在上面,那将是:
{25: 10000, 22: 8999}
我目前的解决方案如下:
res = dict()
for key, cnt in stats.items():
country, age, sex, job = key
try:
res[(country, sex, job)][age] = cnt
except KeyError as e:
res[(country, sex, job)] = {}
res[(country, sex, job)][age] = cnt
print res['America', 'm', 'IT']
我有更好的办法吗?因为这段代码看起来并不那么简单。
请您参考如下方法:
你可以使用字典推导来做到这一点:
>>> data = {
... ('America', 25, 'm', 'IT'): 10000,
... ('America', 22, 'm', 'IT'): 8999,
... ('Japan', 24, 'f', 'IT'): 9999,
... ('Japan', 23, 'f', 'IT'): 9000
... }
>>> {x: value for (w, x, y, z), value in data.items() if w == "America" and y == "m" and z == "IT"}
{25: 10000, 22: 8999}
