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

时间:2020-05-22 21:03:28

标签: python json

我的词典列表:

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

我知道101的名字叫凯特(Kate),我该如何创建一个新的字典列表,其内容如下:

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

编辑:由于无法预先知道字典的顺序,因此无法通过列表中的索引访问字典

2 个答案:

答案 0 :(得分:1)

my_dict1是词典列表的地方,您可以使用for循环遍历该列表。然后,您可以检查相应值101是否在该特定索引处的字典值中。

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

由于您使用索引来访问特定的字典,因此可以使用【{{1}】键来访问该字典中的值。此外,字典是可变的,因此您可以按如下所示直接更改值:'id'

my_dict1[index]['id'] = 'Kate'

答案 1 :(得分:0)

以下是在列表中搜索和更改相应字典的方法:

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}]