我有一个像这样的字典:
dict = {id: ["gavin", "gavin123@email.com", age, 55, [111, 222, 333]]}
有更多的键,但这并不重要。我希望能够将年龄值更改为一个数字,而不是age所以新字典看起来像这样
dict = {id: ["gavin", "gavin123@email.com", 20, 55, [111, 222, 222]]}
是"id"的第三个值。关键。
我尝试使用append()函数,但它只是在末尾添加了一个值。
d["id"].append(20)
print(d)
输出如下:
dict = {id: name, email, age, height, [value1, value2, value3], 20}
在你的特殊情况下
dict[id][2] = 20
从id更改字典键到"id">
dict["id"][2] = 20
没有问题,只是:id__obj: object) ->int返回对象的标识。这保证在同时存在的对象中是唯一的。(CPython使用对象的内存地址。)
我认为你的问题表明了两个问题。第一个是你的结构是一个列表的字典,因此你应该在索引到字典之后索引到列表,@BrijeshVarsani有效地回答了这个问题。
然而,更深层次的问题是,当您的数据不适合该数据类型时,您试图将数据编码为列表。这里的问题是,与列表关联的每个索引都需要额外的信息,程序员必须明确地理解这些信息。这导致了一个极其脆弱的范例,在将来会导致bug。因此,您应该将这些信息编码为一个类:
class User:
def __init__(self, name, email, age, height, values):
self.name = name
self.email = email
self.age = age
self.height = height
self.values = values
dict = {id: User("gavin", "gavin123@email.com", 20, 55, [111, 222, 222])}
dict["id"].age = 20
这段代码的优点是,它使处理单个值变得更加容易,这意味着您将能够隐式地理解您的代码,从而减少花费在修复错误上的时间。