专栏首页python3python字典fromkeys()方法

python字典fromkeys()方法

  • 自定操作中的fromkeys()方法接收两个参数,第一个参数为一个可迭代对象,作为返回字典的key,第二个参数为value,默认为None,具体用法如下: li = [1,2,3] dic1 = dict.fromkeys(li) dic2 = dict.fromkeys(li,[]) print(dic1) # {1: None, 2: None, 3: None} print(dic2) # {1: [], 2: [], 3: []}
  • 此时我为dic2中key为1的列表增加一个元素‘test’,如下: dic2[1].append('test') print(dic2) # {1: ['test'], 2: ['test'], 3: ['test']}
  • 竟然把三个列表的值都给改了,这是为啥呢?先打印下他们的内存地址 print("dic2[1]:{}\ndic2[2]:{}\ndic2[3]:{}".format(id(dic2[1]),id(dic2[2]),id(dic2[3]))) # dic2[1]:1714986428808 # dic2[2]:1714986428808 # dic2[3]:1714986428808
  • 原来它的所有键都指向了同一个内存地址,这也就不难怪修改其中一个而引发联动了,因为本质上只有一个列表。因此,在字典中定义不同的列表不要用fromkeys方法,还是老老实实定义吧 dic2 = {1: [], 2: [], 3: []} print(id(dic2[1])) # 1657985662344 print(id(dic2[2])) # 1657986500680 print(id(dic2[3])) # 1657986501960 dic2[1].append('test') print(dic2) # {1: ['test'], 2: [], 3: []}
  • 使用循环来产生多key的字典: dic2 = {} for k in range(10): dic2[k] = [] print(dic2) # {0: [], 1: [], 2: [], 3: [], 4: [], 5: [], 6: [], 7: [], 8: [], 9: []}
  • tips: fromkeys方法会返回一个新的字典,对原字典无影响 dic1 = {1:2} dic2 = dic1.fromkeys([1,2,3],'test') print(dic1) # {1: 2} print(dic2) # {1: 'test', 2: 'test', 3: 'test'}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 生成器进化到协程 Part 1

    这篇文章大部分来自 David Beazley 在 PyCon 2014 的 PPT 《Generators: The Final Frontier》。这个PP...

    py3study
  • Django设置 DEBUG=False后静态文件无法加载解决

    前段时间调试一直是在Debug=True先运行的,没有什么问题。今天关闭了Debug后,出现了一个问题。就是静态文件找不到了,「img、css、js」都提示40...

    py3study
  • Python小技巧之除法运算、幂运算

    不管是啥语言都离不开加减乘除这些算法,但是在Python里面你知道这些符号代表什么运算吗?

    py3study
  • 强烈推荐一款Python可视化神器!

    Plotly Express 是一个新的高级 Python 可视化库:它是 Plotly.py 的高级封装,它为复杂的图表提供了一个简单的语法。

    AI科技大本营
  • 如何让聊天机器人懂情感?这是一篇来自清华的论文

    原载:Paperweekly 作者:黄民烈,清华大学老师 关注自然语言处理、人机对话情感分析等方向 aihuang@tsinghua.edu.cn 当你悲伤的时...

    量子位
  • Vue实现简单的列表金额计算效果(简易购物车)

    Arebirth
  • 恩智浦对KSDK2.0动大手术换血了

    恩智浦针对kinetis系列MCU推出的KSDK2.0比以前的1.x版本有了很大变化,目录结构有很大不同,且不在支持MQX操作系统,所以在应用中要注意区别对待,...

    用户1605515
  • Vue实现简单的列表金额计算效果(简易购物车)

    Arebirth
  • 2019十大数字化转型趋势 - 上

    过去的几年里,我一直致力于展望未来一年以预测一些最重要的数字化转型趋势。我明白数字化转型不仅是技术转变,而是技术、商业和人员交叉的组织变革,像这样的变革必须考虑...

    iCDO互联网数据官
  • Debian 和Ubuntu Mono 3.0 部署包

    Mono 3.0 刚发布,Debian 的Mono打包工作也开始了, 这篇博客《Mono 3.0 Preview Packages for Debian and...

    张善友

扫码关注云+社区

领取腾讯云代金券