更新字典中

时间:2017-10-27 15:39:37

标签: 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', 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}

有没有更好的方法来保留结构的其余部分,只更新所需的位置?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

这是一个词典理解:

# 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()}

答案 2 :(得分:0)

你可以试试这个:

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)}

哪个是所需的输出。