当值位于具有嵌套字典的元组中时,是否更新字典中的值?

2024-09-29 20:24:43 发布

您现在位置:Python中文网/ 问答频道 /正文

Dict_1 = {}
Dict_1['Sample_Data'] =  [(None, None, None)]

Dict_2 =  {}
Dict_2['detail'] = {'status1' : 0, 'status2' : 0}

File = 'abc.txt'
File_time = '10282020'

Dict_1['Sample_Data'].insert(0,(File, File_time, Dict_2))

现在,Dict_1将是

{'Sample_Data' : ('abc.txt',10282020,{'details' : {'status1' : 0, 'status2' : 0}), (None, None, None)}

同样,如果我在Dict_1中插入更多数据,那么Dict_1将-

{'Sample_Data' : ('file2.txt', '10292020',{'details' : {'status4' : 1, 'status5' : 1}}),('abc.txt','10282020',{'details' : {'status1' : 0, 'status2' : 0}}), (None, None, None)}

如何将Dict_1中file2.txt的状态4和状态5的值更新为0


Tags: sampletxtnonedatatime状态detailsdict
3条回答

尽管元组是不可变的,但它包含对列表和字典等对象的引用,并且这些对象可以更改。但是,引用本身不能更改。因此可以在元组中更新字典

试试这个:

tup = Dict_1['Sample_Data'][0]
tup[-1]['details']['status4'] = 2 #new value
tup[-1]['details']['status5'] = 3 #new value

直接回答:

Dict_1['Sample_Data'][0][2]['detail']['status4'] = 0
Dict_1['Sample_Data'][0][2]['detail']['status5'] = 0

切向相关:

测试数据使用元组来存储数据。与列表不同,元组是不可变的,这意味着它们不能更改。 Python中的元组使用圆括号“()”,列表使用方括号“[]”。 原因很简单,就是性能,元组对于只读数据更有效

您可以访问并更新这些值(如果您知道路径):

Dict_1['Sample_Data'][0][2]['details']['status4'] = 0
Dict_1['Sample_Data'][0][2]['details']['status5'] = 0

print(Dict_1)

输出:

{'Sample_Data': [('file2.txt', '10292020', {'details': {'status4': 0, 'status5': 0}}), ('abc.txt', '10282020', {'details': {'status1': 0, 'status2': 0}}), (None, None, None)]}

如果您不知道路径:

for f in Dict_1['Sample_Data']:
  if f[0] == 'file2.txt':
    f[2]['details']['status4'] = 0
    f[2]['details']['status5'] = 0
    break

print(Dict_1)

输出:

{'Sample_Data': [('file2.txt', '10292020', {'details': {'status4': 0, 'status5': 0}}), ('abc.txt', '10282020', {'details': {'status1': 0, 'status2': 0}}), (None, None, None)]}

相关问题 更多 >

    热门问题