把字典与列表组合,如

i=20
s=[]#定义一个空列表
b={'d':i}#定义一个字典
while i>0:
i=i-1
b['d']=i#更新字典的值
s.append(b)
print(s)

结果为

[{'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}, {'d': 0}]
>>> s[0]['d']=90
>>> s
[{'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}, {'d': 90}]

只改变第一个元素,也是这样,

s的每个元素都是同一个字典实例,改变列表任何一个元素中字典的值,就全部改变了

若改为:

i=20
s=[]
while i>0:
i=i-1
b={'d':i}#每次重新定义b,并赋值
s.append(b)
print(s)

结果为

[{'d': 19}, {'d': 18}, {'d': 17}, {'d': 16}, {'d': 15}, {'d': 14}, {'d': 13}, {'d': 12}, {'d': 11}, {'d': 10}, {'d': 9}, {'d': 8}, {'d': 7}, {'d': 6}, {'d': 5}, {'d': 4}, {'d': 3}, {'d': 2}, {'d': 1}, {'d': 0}]

则是我们想要的结果

第一种情况:是每个列表元素,其实是一个实例, 其实循环里只是 在更新字典的值

第二种情况:每次重新定义字典

python中字典的陷阱的更多相关文章

  1. Python中字典和集合

    Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...

  2. python中字典的循环遍历的两种方式

    开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python ...

  3. python中字典排序,列表中的字典排序

    python中字典排序,列表中的字典排序 一.使用python模块:operator import operator #首先要导入模块operator x = {1:2, 3:4, 4:3, 2:1, ...

  4. python中字典的使用

    python中的字典的特性: 在字典中的元素是散列存放的,没有顺序, 在进行增删改查的时候使用字典中需要的关键字(key)即可. 一: 创建字典 1)直接定义一个: dict = {'ob1':'co ...

  5. python接口自动化(九)--python中字典和json的区别(详解)

    简介 这篇文章的由来是由于上一篇发送post请求的接口时候,参数传字典(dict)和json的缘故,因为python中,json和dict非常类似,都是key-value的形式,为啥还要这么传参,在群 ...

  6. python中字典和json的区别

    python中,json和dict非常类似,都是key-value的形式,而且json.dict也可以非常方便的通过dumps.loads互转 定义 python中,json和dict非常类似,都是k ...

  7. python中字典的用法

    一,字典的简单介绍概念: 字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是 唯一的. 在保存的时候, 根据key来计算出一个内存地址. 然后将 ...

  8. Python中字典和集合的用法

    本人开始学习python 希望能够慢慢的记录下去 写下来只是为了害怕自己忘记. python中的字典和其他语言一样 也是key-value的形式  利用空间换时间 可以进行快速的查找 key 是唯一的 ...

  9. Python中字典的相关操作

    1. Python类似于Java中的哈希表,只是两种语言表示的方式是不一样的,Python中的字典定义如下: 在Python中是一种可变的容器模型,它是通过一组键(key)值(value)对组成,这种 ...

随机推荐

  1. Spring MVC的WebMvcConfigurerAdapter用法收集(零配置,无XML配置)

    原理先不了解,只记录常用方法 用法: @EnableWebMvc 开启MVC配置,相当于 <?xml version="1.0" encoding="UTF-8&q ...

  2. Citrix XenServer

    Citrix XenServer xenserver-test cpu特性码:77fafbff-bfebfbff-00000021-2c100800 xe snapshot-list xen还原快照 ...

  3. Redis5.0之Stream案例应用解读

    非常高兴有机会和大家在这里交流Redis5.0之Stream应用.今天的分享更多的是一个抛砖引玉,欢迎大家提出更多关于Redis的思考. 首先,我们来个假设,这里有个杯子,这个杯子是去年我老婆送的,送 ...

  4. 在CentOS上把Nginx从1.2.4升级到1.6.0

    在CentOS上升级把Nginx从1.2.4升级到1.6.0 摘要:本文记录了在CentOS 6.3上,把Nginx从1.2.4升级到1.6.0的过程. 1. 概述 在我做的一个项目中,最近我对生产服 ...

  5. easyUI的tree

    前端使用easyUI,放了一个tree,搞死了. easyUI的tree,后端传过来的数据,是json格式:然后easyUI向后端提交.请求时,会自动将节点的id附在url后面. 主要有两个注意的地方 ...

  6. 装饰器的初识,基于bootstrap的前端开发

    1装饰器的初识 概念:不改变函数原来的调用方式,动态地给函数添加功能 开放封闭的原则:1>对添加的新功能是开放的,32>不要在元代码进行修改(封闭) 1.1>函数的定义:对代码块和功 ...

  7. button和submit区别

    type=button      就单纯是按钮功能 type=submit      是发送表单 但是对于从事WEB UI的人应该要注意到,使用submit来提高页面易用性: 使用submit后,页面 ...

  8. hadoop第一个例子WordCount

    hadoop查看自己空间 http://127.0.0.1:50070/dfshealth.jsp import java.io.IOException; import java.util.Strin ...

  9. 不同节点 IP 时间同步 分布式时间同步系统的参考时间获取技术分析

    linux linux下时间同步的两种方法分享_LINUX_操作系统_脚本之家 http://www.jb51.net/LINUXjishu/73979.html 分布式时间同步系统的参考时间获取技术 ...

  10. YTU 2426: C语言习题 字符串排序

    2426: C语言习题 字符串排序 时间限制: 1 Sec  内存限制: 128 MB 提交: 262  解决: 164 题目描述 用指向指针的指针的方法对5个字符串排序并输出.要求将排序单独写成一个 ...