如何使用条件更新字典的值?

How to update the values of a dictionary with a condition?

假设我有一本字典,

 {'A1':[3, 2, 1],
 'A2': [9, 10, 11, 12, 13, 14],
 'B1': [4, 5, 6, 7, 8],
 'B2': [15]}

如果我选择一个数字 9,我想更新所有其他键的值,除了 A2(因为 9 属于键 A2),'After' + 键的最后一个元素找到值,在本例中为 14.

编辑: 另一种情况,如果给定值小于 9,则在通过字典解析时我们不会更改其值。

最终字典,

 {'A1':[3, 2, 1],
 'A2': [9, 10, 11, 12, 13, 14],
 'B1': [4, 5, 6, 7, 8],
 'B2': ['After 14']}

假设你的字典是dct,试试字典理解:

x = next(v[-1] for k, v in dct.items() if 9 in v)
>>> {k: v if (9 in v) or all(x < 9 for x in v) else [f'After {x}'] for k, v in dct.items()}

{'A1': [3, 2, 1], 'A2': [9, 10, 11, 12, 13, 14], 
 'B1': [4, 5, 6, 7, 8], 'B2': ['After 14']}

请注意,这适用于任何值,而不仅仅是 14

如果字典定义为d,则

d['A1'] = item

将更改在 'A1' 分配的项目。

如果你想要自动化算法,那么你可以使用:

for key in d:
    d[key] = item

IIUC,假设互斥值(即值不重叠):

n = 9
key, (*_, last)  = next((k, v) for k, v in d.items() if n in v)

{k: [f"After {last}"] if k != key else v for k, v in d.items()}

输出:

{'A1': ['After 14'],
 'A2': [9, 10, 11, 12, 13, 14],
 'B1': ['After 14'],
 'B2': ['After 14']}