Skip to main content
 首页 » 编程设计

python之将 dict 的元组键转换为新的 dict

2025年05月04日13落叶无声

我有一个像这样的 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}