如何向字典中的数组追加新字典?及如何用for循环实现?
解决字典中列表追加元素的问题
嘿,我来帮你搞定这个问题!你现在的代码之所以会出问题,是因为dict1['c']是一个列表,你试图用+运算符把它和一个字典newvalue直接相加——但列表的+操作要求右边必须也是列表,不能直接加单个字典,这就会触发类型错误啦。
直接追加单个字典的正确方法
要给c对应的列表追加新字典,用列表的append()方法就可以了,这是最直接的方式:
dict1 = { 'a': 1, 'b': 2, 'c': [{'aa': 11, 'bb': 22}]} newvalue = {'aa': 111, 'bb': 222} dict1['c'].append(newvalue) # 执行后dict1就是你想要的结果: # {'a': 1, 'b': 2, 'c': [{'aa': 11, 'bb': 22}, {'aa': 111, 'bb': 222}]}
用for循环实现追加操作
如果需要批量追加多个字典,或者要从设备获取值循环生成新字典再追加,就可以用for循环来处理,分两种常见场景:
场景1:批量追加已有的多个字典
如果你已经有一堆要添加的字典存在列表里,直接循环遍历逐个append:
dict1 = { 'a': 1, 'b': 2, 'c': [{'aa': 11, 'bb': 22}]} # 假设这是从设备获取到的多个新值 new_values = [{'aa': 111, 'bb': 222}, {'aa': 333, 'bb': 444}, {'aa': 555, 'bb': 666}] for val in new_values: dict1['c'].append(val) # 最终结果: # {'a': 1, 'b': 2, 'c': [{'aa': 11, 'bb': 22}, {'aa': 111, 'bb': 222}, {'aa': 333, 'bb': 444}, {'aa': 555, 'bb': 666}]}
场景2:循环生成新字典并追加
如果需要从设备获取一系列值,动态生成字典再追加,比如你有设备返回的aa和bb序列:
dict1 = { 'a': 1, 'b': 2, 'c': [{'aa': 11, 'bb': 22}]} # 模拟从设备获取的aa和bb值列表 device_aa_data = [111, 333, 555] device_bb_data = [222, 444, 666] # 用zip配对两个列表的元素,循环生成字典并追加 for aa, bb in zip(device_aa_data, device_bb_data): new_dict = {'aa': aa, 'bb': bb} dict1['c'].append(new_dict)
这样就能轻松实现你想要的批量追加效果啦~
内容的提问来源于stack exchange,提问作者netkool
相关产品推荐
相关产品推荐

