rog*_*ger 1 python dictionary tuples
我dict喜欢这样的:
{
('America', 25, 'm', 'IT'): 10000,
('America', 22, 'm', 'IT'): 8999,
('Japan', 24, 'f', 'IT'): 9999,
('Japan', 23, 'f', 'IT'): 9000
}
Run Code Online (Sandbox Code Playgroud)
现在,我希望('America', 'm', 'IT')在此示例中使用key获取所有结果.在上面,那将是:
{25: 10000, 22: 8999}
Run Code Online (Sandbox Code Playgroud)
我目前的解决方案如下:
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']
Run Code Online (Sandbox Code Playgroud)
我有更好的方法吗?因为这段代码看起来并不那么简单.
您可以使用dict理解来执行此操作:
>>> 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}
Run Code Online (Sandbox Code Playgroud)