我想尝试查找一个值是否在字典列表中,这可以通过以下操作轻松完成:
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'}]