我有一本看起来像这样的字典
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}
有没有更好的方法来保留结构的其余部分,只更新所需的位置?
答案 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)}
哪个是所需的输出。