Python 在字典列表中,将特定键的特定值从整数更改为字符串

Python 在字典列表中,将特定键的特定值从整数更改为字符串,python,json,Python,Json,我的字典列表: my_dict1 = [{'id': 101, 'noob': False}, {'id': 102, 'noob': True}] 我知道101的名字是凯特,我如何创建一个新的字典列表,内容如下: my_dict2 = [{'id': 'Kate', 'noob': False}, {'id': 102, 'noob': True}] 编辑:我无法通过列表中的索引访问词典,因为我无法预先知道词典的顺序,其中我的dict1是一个词典列表,您可以

我的字典列表:

my_dict1 = [{'id': 101, 'noob': False},
        {'id': 102, 'noob': True}]
我知道101的名字是凯特,我如何创建一个新的字典列表,内容如下:

my_dict2 = [{'id': 'Kate', 'noob': False},
        {'id': 102, 'noob': True}]

编辑:我无法通过列表中的索引访问词典,因为我无法预先知道词典的顺序,其中
我的dict1
是一个词典列表,您可以使用for循环遍历该列表。然后,您可以检查相应的值
101
是否在该特定索引处的字典值中

保留一个初始化为0的变量,并在每次循环中递增该变量,以跟踪当前字典位于哪个索引。如果在该字典的值中找到
101
,则使用索引变量中存储的当前值将其索引到列表中。您已经知道密钥是
'id'

由于使用索引访问特定词典,因此可以使用
'id'
键访问该词典中的值。此外,字典是可变的,因此您可以按如下方式直接更改值:
my_dict1[index]['id']='Kate'

index = 0 #incremented variable
for i in my_dict1: #loop through list of dictionaries
    if 101 in i.values(): #check if 101 is a value
        my_dict1[index]['id']='Kate' # assign 'Kate' as a value to the id in the dictionary containing 101
    index+=1 #increment variable

以下是如何在列表中搜索和更改相应的词典:

my_dict1 = [{'id': 101, 'noob': False},
            {'id': 102, 'noob': True}]


class NotFoundError(Exception): pass

def change_id(my_list, old_id, new_id):
    for d in my_list:
        if d['id'] == old_id:
            d['id'] = new_id
            return
    else:
        raise NotFoundError(f'Old id {old_id!r} not found')

change_id(my_dict1, 101, 'Kate')
print(my_dict1)  # -> [{'id': 'Kate', 'noob': False}, {'id': 102, 'noob': True}]

好主意,但我不能,因为列表是以前函数的结果,我不知道功能101的字典是第一个还是第一个not@N0PE我对代码做了一些修改,但似乎其他人也回答了。谢谢,你能告诉我最后一行吗?我正在努力理解它。我的字典是一系列字典。index=0表示从列表中的第一个字典开始。如果在第一个字典中找不到101,它将检查列表中的下一个字典并将索引增加1,以跟踪您现在在第二个字典中的位置。如果有更多字典,该变量将跟踪当前正在检查的字典。如果它确实找到101,那么它将获取index的值并使用它索引到列表中,使用键访问字典,然后替换该值。这有帮助吗?@double-beep谢谢,我编辑了这篇文章,以后会记住这一点:如果dct['id']==101:dct['id']='Kate'?嗯,我收到警告“不能为变量注释分配运算符/非法目标”尝试在单独的行中缩进它,而不是压缩的格式。你是对的,我错了!