栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 列表添加字典问题学习记录

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 列表添加字典问题学习记录

Python 列表添加字典问题学习记录
最近扣了一个python脚本,踩了个坑,仅作记录,避免后续踩坑。

import json


def example1():
    dict2 = {}
    dict2_add = []
    dic_a = []
    for i in range (0,3):
        dict2_add.append (dict2)
    print("数据类型1:",type(dict2_add[0]),type(dict2_add[1]),type(dict2_add[2]))
    print("构造列表1:",dict2_add)

    vuln1_info = ['{"a":"aa","b":"bb","c":"cc"}','{"a":"aa1","b":"bb1","c":"cc1"}','{"a":"aa2","b":"bb2","c":"cc2"}']

    for info in vuln1_info:
        name1 = vuln1_info.index (info)
        #print(info)
        dict1 = json.loads (str(info))
        #print(dict1)
        dict2_add[name1]["A"] = dict1["a"]
        dict2_add[name1]["B"] = dict1["b"]
        dict2_add[name1]["C"] = dict1["c"]
        dic_a.append (dict2_add[name1])
    print("生成结果1:",dict2_add)


def example2():
    dict2 = {}
    dict2_add = []
    dic_a = []
    for i in range (0, 3):
        dict2_add.append (dict(dict2))
    print ("数据类型2:", type (dict2_add[0]), type (dict2_add[1]), type (dict2_add[2]))
    print ("构造列表2:", dict2_add)

    vuln1_info = ['{"a":"aa","b":"bb","c":"cc"}', '{"a":"aa1","b":"bb1","c":"cc1"}', '{"a":"aa2","b":"bb2","c":"cc2"}']

    for info in vuln1_info:
        name1 = vuln1_info.index (info)
        # print(info)
        dict1 = json.loads (str (info))
        # print(dict1)
        dict2_add[name1]["A"] = dict1["a"]
        dict2_add[name1]["B"] = dict1["b"]
        dict2_add[name1]["C"] = dict1["c"]
        dic_a.append (dict2_add[name1])
    print("生成结果2:",dict2_add)

if __name__ == "__main__":
    example1()
    print("----------------------------------------------------------------------------------------")
    example2()

输出结果:

数据类型1:   
构造列表1: [{}, {}, {}]
生成结果1: [{'A': 'aa2', 'B': 'bb2', 'C': 'cc2'}, {'A': 'aa2', 'B': 'bb2', 'C': 'cc2'}, {'A': 'aa2', 'B': 'bb2', 'C': 'cc2'}]
----------------------------------------------------------------------------------------
数据类型2:   
构造列表2: [{}, {}, {}]
生成结果2: [{'A': 'aa', 'B': 'bb', 'C': 'cc'}, {'A': 'aa1', 'B': 'bb1', 'C': 'cc1'}, {'A': 'aa2', 'B': 'bb2', 'C': 'cc2'}]

唯一不同就是dict2_add.append (dict2) 与 dict2_add.append (dict(dict2))。

字典赋值习惯性 append一个常量={},就是添加常量字典,常量字典地址指针指向常量不变,append 添加重复值常量,没有分配新的存储空间,造成例一存在三个重复值。

正常情况下循环生成的字典需要新的存储地址,存储不同的数据,用dict 可以初始化字典,即产生不同地址指向的字典。

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object’s

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/341415.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号