Python字典建议收藏

1.字典d={"name":"zhangsan","age":18}dict的键必须是唯一的,但值则不必,键必须是不可边的,如字

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

1. 字典

  d = {“name”:”zhangsan”, “age”:18}

  dict的键必须是唯一的,但值则不必,键必须是不可边的,如字符串,数组或元祖。

2. dict函数

  可以使用dict函数,通过其他映射(比如其他字典)或者(键,值)对的序列建立字典

items=[('name',"John"), ("age", 42)]
d=dict(items)
print("d:",d)
print(d["name"])

d1=dict(name="John", age=42)
print("d1:",d1)
print(d1["name"])

>>> d: {'name': 'John', 'age': 42}
>>> John
>>> d1: {'name': 'John', 'age': 42}
>>> John

3. 基本字典操作

  字典的基本行为在很多方面与序列类似:

  len(d)

  d[key]

  d[key] = value

  del d[key]

  key in d

people = {
    "zhangsan":{"age":18, "phone":"2341"},
    "lisi":{"age":30, "phone":"8888"}
}

name = input("Name:")
request = input("age(a) or phone(h)?")
if request == "a":
    key = "age"
elif request == "p":
    key = "phone"
    
if name in people:
    print ("%s's %s is %s" %(name,key,people[name][key]))

Python字典建议收藏

注:在Python3中已经将raw_input和input整合成了input,去除了raw_input()函数,其接受任意输入, 将所有输入默认为字符串处理,并返回字符串类型

4. 字典的格式化字符串

  在前面Python字符串博客中已经介绍了python字符串,下面我们看看格式化在字典中的应用:

template = '''
    <head><title>%(title)s</title></head>
    <body>
        <h1>%(title)s</h1>
        <p>%(text)s</p>
    </body>
'''

data = {"title":"my web", "text":"welcome to my home page"}
print(template %(data))

Python字典建议收藏

5. 字典方法

(1)clear 清除字典中所有的项

(2)copy 

   说到拷贝一定离不开浅拷贝和深拷贝的话题,下面通过例子进行说明

  例1:

d = {"name":"zhangsan", "info":{"age":16, "sex":"man"}}
d1 = d
d2 = d.copy()

print("d's ID:%d" %(id(d)))
print("d1's ID:%d" %(id(d1)))
print("d2's ID:%d" %(id(d2)))

Python字典建议收藏

 可以看出d和d1的地址相同,d2的地址不同

  例2:

d = {"name":"zhangsan", "info":{"age":16, "sex":"man"}}
d1 = d
d2 = d.copy()

d2["name"] = "lisi"
print("d:", d)
print("d2:", d2)

d2["info"]["age"] = 88
print("d:", d)
print("d2:", d2)

Python字典建议收藏

修改以后,name不同,age相同,这就是浅拷贝的最好说明

解决浅拷贝的最好方法就是深拷贝,Python中提供了copy模块中的deepcopy

  例3:

d = {"name":"zhangsan", "info":{"age":16, "sex":"man"}}
from copy import deepcopy
d2 = deepcopy(d)

d2["name"] = "lisi"
print("d:", d)
print("d2:", d2)

d2["info"]["age"] = 88
print("d:", d)
print("d2:", d2)

Python字典建议收藏

(3)fromkeys

  使用给定的键建立新的字典,每个键都对应一个默认的值None

d = {}.fromkeys(["name", "age"])
print(d)

d1 = dict.fromkeys(["name", "age"])
print(d1)

d2 = dict.fromkeys(["name", "age"], ("undefine"))
print(d2)

Python字典建议收藏

  注:无法给“name”,”age”不同的默认值

(4)get

  get函数是我觉得相当重要又很有意思的一个函数,有意思就在于它在访问一个不存在的键时,没有任何异常,而得到None值,还可以自定义“默认值”,替换None

d ={"name":"zhangsan", "age":18}
print(d.get("sex","man"))

>>> man

(5)has_key 检查字典中是否含有某个特定的键

(6)items

  items将字典中的所有的项一列表方式返回,注意,返回时没有遵循特定的顺序

 

d ={"name":"zhangsan", "age":18, "sex":"man"}

print(d.items())

>>> [('name', 'zhangsan'), ('age', 18), ('sex', 'man')]

(7)keys

  同上,将字典中的键值以列表的方式返回

(8)pop

  pop方法获得对应键的值,然后将这个键-值从字典中移除

(9)popitem

  随机的一个一个地移除项,我觉得用处不大

(10)setdefault

  setdefault方法在某种程度上类似于get方法

  为指定的键设置值,若键存在返回键所对应的值,若键不存在,返回设置的值,并更新字典

d ={"name":"zhangsan", "age":18, "sex":"man"}

print (d.setdefault("name", "lisi"))
print(d)

print(d.setdefault("addr", "wuhan"))
print(d)

Python字典建议收藏

(11)update

  可以利用一个字典项更新另一个字典项

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120228.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【Java基础知识 15】java反射机制原理详解

    【Java基础知识 15】java反射机制原理详解一、类的加载与ClassLoader的理解1、加载将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这个类的java.lang.class对象。2、链接将Java类的二进制代码合并到JVM的运行状态之中的过程。验证:确保加载的类信息符合JVM规范,没有安全方面的问题; 准备:正式为类变量分配内存并设置类变量默认初始值的阶段,这些内存都将在方法区内进行分配; 解析:虚拟机常量池内的符号引用(常量名)替换为直接引用(地址)的过程。3、

    2022年8月24日
  • 大数据平台建设路径

    大数据平台建设路径数字化转型这几年成为了集团公司或大型企业寻求业务突破的重要手段,而且各行各业都不乏成功案例,例如金融行业的建设银行、招商银行、平安保险等,还有一些生动的例子,例如百丽鞋业。而国外的经典案例就是亚马逊和特斯拉。集团客户动静都很大,首先要做咨询规划,必须跟上投入和管理配套,然后可以开始平台建设,最终开始应用,赋能各业务线和产品线。从技术的角度,一个完整的大数据平台通常会三期建设。先看下图:蓝色部分是第一期内容,绿色部分是第二期内容,橙色部分是第三期内容。第一步,先建设大数据基础平台。首要满足的是数据汇聚

    2022年4月30日
  • Offsetof用法「建议收藏」

    Offsetof用法「建议收藏」#include<stddef.h>#include<stdio.h>structaddress{charname[50];charstreet[50];intphone;};intmain(){printf(“address结构中的name偏移=%d字节。\n”,offsetof(structaddress,name));printf(“address结构中的street偏移=%d字节。\n”,offsetof(s

    2022年8月22日
  • 您的计算机无法访问dota2服务器,提示“已连接至DOTA2游戏协调服务器,正在登陆中”该如何解决?…「建议收藏」

    您的计算机无法访问dota2服务器,提示“已连接至DOTA2游戏协调服务器,正在登陆中”该如何解决?…「建议收藏」《DOTA2》游戏,是一款RPG有些,在国内的玩家有很多,最近有位小伙伴打算在Win10电脑上与朋友一起玩《DOTA2》,却一直提示“已连接至DOTA2游戏协调服务器,正在登陆中”,无法顺利进入该游戏,很是郁闷,所以来问小编该如何解决?今天,小编就带大家一起去了解一下Win10电脑玩《DOTA2》提示“已连接至DOTA2游戏协调服务器,正在登陆中”的解决方案。解决方案一:1、开始按钮在搜索中输入C…

    2022年5月17日
  • ai的文件怎样将里面的文字转曲_PDF文件置入AI缺少字体

    ai的文件怎样将里面的文字转曲_PDF文件置入AI缺少字体AI文件中文字转曲是什么?怎么转曲?转曲百度百科

    2022年8月6日
  • mount CIFS return ERR -12 and report Cannot allocate memory[通俗易懂]

    mount CIFS return ERR -12 and report Cannot allocate memory

    2022年1月28日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号