我想尝试查找一个值是否在字典列表中,这可以通过以下操作轻松完成:

if any(x['aKey'] == 'aValue' for x in my_list_of_dicts):


但这只是一个布尔响应,我不仅要检查该值是否存在,而且还要在以后访问它,所以类似:

for i, dictionary in enumerate(my_list_of_dicts):
    if dictionary['aKey'] == 'aValue':
        # Then do some stuff to that dictionary here
        # my_list_of_dicts[i]['aNewKey'] = 'aNewValue'


是否有更好/更多的pythonic方式写出来?

最佳答案

使用next函数,如果期望仅找到一个目标dict:

my_list_of_dicts = [{'aKey': 1}, {'aKey': 'aValue'}]
target_dict = next((d for d in my_list_of_dicts if d['aKey'] == 'aValue'), None)
if target_dict: target_dict['aKey'] = 'new_value'

print(my_list_of_dicts)


输出(输入列表和更新的词典):

[{'aKey': 1}, {'aKey': 'new_value'}]

09-25 16:12