首页 > 解决方案 > 修改包含元组的字典

问题描述

我正在尝试转换:这个 Diciotonary :

dictio = {(3, 3): 'blue'}

dictio = {33: 'blue'}

我修改 dict 值没有问题,但元组键是问题所在。

看到无法修改元组,我该怎么办?

标签: pythonpython-3.x

解决方案


您可以执行以下操作:

dictio = {int(''.join(map(str, k))): v for k,v in dictio.items()}

回报:

{33: 'blue'}

这也适用于以下示例:

dictio = {(3, 3): 'blue', (4, 2): 'red', (6, 2, 5): 'green'}

回报:

{33: 'blue', 42: 'red', 625: 'green'}

请注意,如果您有类似的情况,这将导致键冲突{(4, 31): 'red', (43, 1): 'green'},并且您的结果将包括最后一个键值对,在这种情况下{431: 'green'}

在这种情况下,我会改为使用以下内容:

dictio = {(3, 3): 'blue', (4, 2): 'yellow', (4, 31): 'red', (43, 1): 'green'}

new_dict = {}
for k,v in dictio.items():
    key = int(''.join(map(str, k)))
    if key in new_dict:
        new_dict[key].append(v)
    else:
        new_dict[key] = [v]

回报:

{33: ['blue'], 42: ['yellow'], 431: ['red', 'green']}

推荐阅读