Python 更新字典中特定位置的所有值

Python 更新字典中特定位置的所有值,python,dictionary,tuples,Python,Dictionary,Tuples,我有一本这样的字典 dict_ = {'ALPHA':(["data['ALPHA']", 'EMPTY'], 'N', 'N', 1),'BETA':(["data['BETA']", 'EMPTY'], 'N', 'N', 2),'GAMMA':(["data['GAMMA']", 'EMPTY'], 'N', 'N', 3)} 我想在每个值元组的最后一个整数中添加一个常量,以获得 dict_ = {'ALPHA':(["data['ALPHA']", 'EMPTY'], 'N', 'N

我有一本这样的字典

dict_ = {'ALPHA':(["data['ALPHA']", 'EMPTY'], 'N', 'N', 1),'BETA':(["data['BETA']", 'EMPTY'], 'N', 'N', 2),'GAMMA':(["data['GAMMA']", 'EMPTY'], 'N', 'N', 3)} 
我想在每个值元组的最后一个整数中添加一个常量,以获得

dict_ = {'ALPHA':(["data['ALPHA']", 'EMPTY'], 'N', 'N', 6),'BETA':(["data['BETA']", 'EMPTY'], 'N', 'N', 7),'GAMMA':(["data['GAMMA']", 'EMPTY'], 'N', 'N', 8)} 
我试过了

offset = 5
dict_.update((x, y[3]+offset) for x, y in dict_.items())
导致

{'ALPHA': 6, 'BETA': 7, 'GAMMA': 8}
有没有更好的方法来保存结构的其余部分,并且只更新所需的位置?

您可以尝试以下方法:

dict_ = {'ALPHA':(["data['ALPHA']", 'EMPTY'], 'N', 'N', 1),'BETA':(["data['BETA']", 'EMPTY'], 'N', 'N', 2),'GAMMA':(["data['GAMMA']", 'EMPTY'], 'N', 'N', 3)} 
final_dict = {a:tuple(list(b)[:-1]+[list(b)[-1]+5]) for a, b in dict_.items()}
输出:

{'ALPHA': (["data['ALPHA']", 'EMPTY'], 'N', 'N', 6), 'BETA': (["data['BETA']", 'EMPTY'], 'N', 'N', 7), 'GAMMA': (["data['GAMMA']", 'EMPTY'], 'N', 'N', 8)}

这是所需的输出。

无法就地更新这些值,因为它们是元组。因此,您需要迭代并使用偏移量重新生成每一个

for k, v in dict_.items():
    dict_[k] = v[:-1] + (v[-1] + offset,)

下面是一个可以做到这一点的口述:

# Your input dict
dict_ = {
    'ALPHA':(["data['ALPHA']", 'EMPTY'], 'N', 'N', 1),
    'BETA':(["data['BETA']", 'EMPTY'], 'N', 'N', 2),
    'GAMMA':(["data['GAMMA']", 'EMPTY'], 'N', 'N', 3)}

# The offset for the last value of the tuple
offset = 5

# The updated dict
dict_offset = {
    key: value[:-1] + (value[-1] + offset, ) for key, value in dict_.items()}

问题是这里的值是元组,元组是不可变的。如果你想保持当前的结构,你需要有效地覆盖每个元组