如何使用条件更新字典的值?
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']}
假设我有一本字典,
{'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']}