python学习08_dict字典

一、字典简介

  1. 字典是以键值对的形式进行储存数据的
  2. 字典的表示方式: key是键,value是值
{key1:value1, key2:value2, key3:value3}

举例:
在这里插入图片描述
从字典中提取数据的方式为:通过键(key)的方式提取值(value)
和从列表中提取数据的区别为:将索引换成键(key)
3. 字典的key必须是可哈希的数据类型,字典的value可以是任何数据类型

dict = {[1]: "周杰伦"}
print(dict)

在这里插入图片描述

二、字典的增删改查

1. 新增&修改:

1.1 方式1: dic[“key”] = “value”

dic = dict()
dic["jay"] = "周杰伦"
dic[1] = 123
print(dic)

{'jay': '周杰伦', 1: 123}

注意:字典里不能出现重复的key
如果再之后重新给某个key赋予元素,实际上执行的就是修改操作了。
举例:此时字典里已经有jay了在这里插入图片描述
1.2 方式2: dic.setdefault(“key”, “value”)
含义:设置默认值,如果以前已经存在了setdefault中对应的key,那么setdefault就不起作用了。

dic.setdefault("tom", "胡辣汤")
print(dic)

2. 删除:

根据key去删除,方式为dic.pop()

dic.pop("jay")
print(dic)

3. 查询:

两种方式:
方式1:如果key不存在,程序会报错,当确定key是没问题的时候可以用
方式2:如果key不存在,程序会返回none,当不确定key没问题的时候可以用

print(dic['jay'])
print(dic.get('jay'))

None:什么都不是,也是一种单独的数据类型,不能做任何操作,单纯就是空,表示没有的意思。
None的作用:有些情况下有了none存在,会让程序的流畅度提高
举例:
在这里插入图片描述

三、字典进阶操作——循环和嵌套

1. for循环

可以用for循环,直接拿到key

for key in dic:
    print(key, dic[key])

2. 希望把所有的key保存在一个列表中

print(dic.keys())
print(list(dic.keys()))

3. 希望把所有1的value保存在一个列表中

print(dic.values())
print(list(dic.values()))

4. 直接拿到字典中的key和value

4.1

print(list(dic.items()))

返回结果:是以列表形式返回的结果
在这里插入图片描述
如果想分别返回key和value,可以如下操作:

for item in dic.items():
    key = item[0]
    value = item[1]
    print(key, value)

返回结果:
在这里插入图片描述

4.2 解构(解包)

将元组或者列表拆开,里面每个元素分别赋值给等号前面的变量。
举例:
在这里插入图片描述
注意:解包时元组或列表中元素个数和等号前变量个数必须保持一致
举例:
在这里插入图片描述

4.3 结合解包获取key和value

for item in dic.items():
    # print(item)  # 确定item中只有两个元素
    key, value = item
    print(key, value)

可以通过item直接拿到字典所有的key和value,程序继续简化

for key, value in dic.items():
    print(key, value)

5. 字典的嵌套

举例:

kobebryant = {
    "name": "KobeBryant",
    "age": 43,
    "wife": {
        "name": "Venessa",
        "age": 41,
        "assistant": {
            "name": "Shaw",
            "gender": "male",
            "hobby": "basketball"
        },
    },
    "children": [
        {"name": "natalie", "age": "21"},
        {"name": "gigi", "age": "13"}
    ]
}
# please input kobe's wife's assistant's name'
name = kobebryant["wife"]["assistant"]["name"]
print(name)

在这里插入图片描述
应用示例2:

# change gigi's age to 14
kobebryant["children"][1]["age"] = kobebryant["children"][1]["age"] + 1
print(kobebryant["children"][1])

在这里插入图片描述

五、字典的循环删除

示例:删掉以大开头的key

dic = {
    "赵四": "尼古拉斯赵四",
    "刘能": "老。老四啊...",
    "大脚": "月仙姨回娘家了",
    "大脑袋": "瞎折腾......"
}
for key in dic:
    if key.startswith("大"):  # RuntimeError: dictionary changed size during iteration
        dic.pop(key)
print(dic)

返回时报错:RuntimeError: dictionary changed size during iteration标明迭代时不能改变字典的大小(元素的数量)
那么可以参照列表的做法,建立临时列表存放即将要删除的key

dic = {
    "赵四": "尼古拉斯赵四",
    "刘能": "老。老四啊...",
    "大脚": "月仙姨回娘家了",
    "大脑袋": "瞎折腾......"
}
temp = []
for key in dic:
    if key.startswith("大"):  # RuntimeError: dictionary changed size during iteration
        temp.append(key)
        # dic.pop(key)

for t in temp:
    dic.pop(t)
print(dic)

返回结果如下:
在这里插入图片描述

  • 39
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枯木逢春24

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值