第五天

风流意气都作罢 提交于 2020-02-22 11:59:54

字典

数据类型:

可变(不可哈希) list dict set

不可变(可哈希) str int bool tuple

  • 例如 对字符串操作之后 形成的是新的字符串 原字符串不改变

字典:{}括起来 键:对值

  1. 键 : 不可变类型 int str (bool tuple 几乎不用)
    1. 房间号
    2. 唯一
  2. 值:可以是任意类型
    1. 房间 放什么都行

字典3.5无序

3.6x 初次建立 顺序 但是学术上不认为是有序

3.7x以后都是有序的

优点:查询速度快,存储关联性数据

缺点:,空间换时间

创建方式

  1. 直接创建

    ​ dic = dcit(("one",1),("two",2),("three",3))

    ​ dic={"大王":"365","age":18}

  2. 方式二

    ​ dic=dict(one=1,two=2,three=3)

  3. 方式三

    ​ dic=dict({"one":1,"two":2,"three":3})

dic={"name":"太白","age":18}

第一种--有则改之,无则添加

  1. dic["sex"]="男"
  2. dic["age"]=23 #有则改之,无则添加 "age"已经有了 把他的18改为23

第二种--有则不变,无则添加

dic.setdefault("hobby")

dic={"name":"太白","age":18,"hobby":None}

dic.setdefault("hobby","女")

dic={"name":"太白","age":18,"hobby":"女"}

dic.setdefault("age",35)

dic={"name":"太白","age":18}

{"name":"太白","age":18}

第一种

pop

  1. 按照 键 删除 键值对

  2. 有返回值 返回 键的值

  3. 设置第二个参数时 ,无论字典中有无都不会报错

    1. dic.pop("hobby")没有第二个参数 ,报错

    2. dic.pop("hobby","没有此键")不报错 返回第二个参数值

      ​ #"没有此键"

ret=dic.pop("age")

print(ret) #18

第二种

clear

dic.clear()

print(dic)

#{}

第三种

del

按照 键 删除

del dic["age"]

del dic["age1"] #没有此键 ,报错

dic["name"]="小白"

第一种---不可取 ,会报错

{"name":"太白","age":18}

print(dic["name"])

print(dic["namee"]) 没有此键,报错

第二种

  1. get

    ​ a=dic.get("name")

    ​ print(a)

    ​ #太白

  2. a=dic.get("namee")

    ​ print(a)

    ​ #None

  3. a=dic.get("namee","没有此键")

    ​ print(a)

    ​ #"没有此键"

三个特殊的--加上list 变成列表才能操作

{"name":"太白","age":18}

keys

print(dic.keys()) 得到一个特殊的类型

  • 类型为 dict_keys 可以转化为列表
    • list(dic.keys())

dict_keys(["name","age"])

打印所有键

  • for key in dic.keys():

    ​ print(key)

    等价于

​ for key in dic:

​ print(key)

打印所有键值

values

print(dic.values())

dict_values(["太白","18"])

打印所有键值对

items

print(dic.items())

dict_items([("name","太白"),("age","18"))

  • for i in dic.items():

    ​ print(i)

​ ("name","太白")

​ ("age","18")

  • 拆包

    ​ for a,b in dic.items():

      print(a,b)

​ name 太白

​ age 18

dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
# # 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
# # 请在修改字典中 "k1" 对应的值为 "alex",输出修改后的字典
# # 请在k3对应的值中追加一个元素 44,输出修改后的字典
# #     请在k3对应的值的第 1 个位置插入个元素 18,输出修改后的字典
#1
#
dic["k4"]="v4"
print(dic)
#2
dic["k1"]="alex"
print(dic)

#3
dic.get("k3").append(44)

#dic["k3"]=dic.get("k3")这一行不用要
print(dic)
#4
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
dic.get("k3").insert(0,18)

#dic["k3"]=dic.get("k3")这一行不用要
print(dic)

嵌套

dic = {
    'name':'汪峰',
    'age':48,
    'wife':[{'name':'国际章','age':38}],
    'children':{'girl_first':'小苹果','girl_second':'小怡','girl_three':'顶顶'}
}

# 1. 获取汪峰的名字。

print(dic.get("name"))
print(dic["name"])
#
# 2.获取这个字典:{'name':'国际章','age':38}。
print((dic.get("wife"))[0])
print(dic['wife'][0])
#
# 3. 获取汪峰妻子的名字。
print(dic.get("wife")[0].get("name"))
print(dic['wife'][0]['name'])
#
# 4. 获取汪峰的第三个孩子名字。


print(dic['children']['girl_three'])
print(dic.get("children").get('girl_three'))
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!