当前位置:   article > 正文

Python之字典与集合_python中字典和集合

python中字典和集合

雾都之菜魚与Python恋爱的第五天 “字典与集合

一、什么是字典
1、用大括号包裹起来的键值对形式(也叫key vlue形式)的数据叫字典
2、键和值之间用冒号(:)分割
3、每一项键值对之间用逗号分隔
4、定义的key通常都是字符串类型

例子一

# 'name': '孙悟空' name就是键也叫key 孙悟空就是值也叫value 他们中间用冒号分割
class_info_dict1 = {'name': '孙悟空', 'vocation': '演员', 'pay': '20000'}
class_info_dict2 = {'name': '牛魔王', 'vocation': '灯光师', 'pay': '15000'}
class_info_dict3 = {'name': '猪八戒', 'vocation': '导演', 'pay': '2000000'}
print(class_info_dict1)
# 打印class_info_dict1的类型是字典(dict)
print(type(class_info_dict1))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

二、那在字典中怎么取值呢? 答案就是通过我们的键或者叫key去取值

例子二

# 'name': '孙悟空' name就是键也叫key 孙悟空就是值也叫value 他们中间用冒号分割
class_info_dict1 = {'name': '孙悟空', 'vocation': '演员', 'pay': '20000'}
class_info_dict2 = {'name': '牛魔王', 'vocation': '灯光师', 'pay': '15000'}
class_info_dict3 = {'name': '猪八戒', 'vocation': '导演', 'pay': '2000000'}
# 这里的意思是获取我们class_info_dict1中key为name的值
print(class_info_dict1['name'])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

三、字典的特性和作用
特性:
1、key必须唯一
2、value可以不唯一,可以修改
3、无序
4、查询速度快
作用:
字典的作用和列表一样用来存储多个值,但是key是唯一的

四、嵌套字典怎么取值?

这里是我写的一个例子大家可以动手去试试看哦!!!

# 嵌套怎么去取值
# 举例:
list1 = {
    '001': {'name': '废魚', '身高': '175', '体重': '120', '口头禅': '我是白菜'},
    '002': {'name': '胡歌', '身高': '180', '体重': '130', '口头禅': '我不急,彭于晏还没有找呢'},
    '003': {'name': '彭于晏', '身高': '180', '体重': '125', '口头禅': '我不急,胡歌还没有找呢'}

}
# 我怎么取到胡歌的口头禅呢
print("{}的口头禅是{}".format(list1['002']['name'], list1['002']['口头禅']))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

五、字典的增删改查

5.1、字典的增

这里我们用到一个方法(.setdefault(self,_key(键),_default(默认值)),意思就是往里面加一个默认值)。

# 这里呢我们定义一个info信息
info = {
		'name': '胡歌',
        '身高': '180',
        '体重': '130',
        '口头禅': '我不急,彭于晏还没有找呢!'
      }

# 这里呢通过我们的方法往里面增加一个性别的键值对
# 注:在我们用方法setdefault增加键值对的时候要注意是用逗号分割不是冒号
info.setdefault('sex', '男')
# 最后是输出查看我们的方法是否有增加我们写入的键值对信息
print(info)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这里插入图片描述
5.2、字典的删

5.2.1、这里我们用到方法一(.pop(self,k(键)),意思就是删除传入键的键值对)

# 这里呢我们定义一个info信息
info = {
        'name': '胡歌',
        'sex': '男',
        'stature': '180',
        'weight': '130',
        'tag': '我不急,彭于晏还没有找呢!'
    }
# 这里呢我们用我们的方法(.pop(self,k(键)),意思就是删除传入键的键值对)
info.pop('sex')
# 输出我们的结果
print(info)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

5.2.2、这里我们用到方法二(.clear(self)意思就是清空字典)

# 这里呢我们定义一个info信息
info = {
        'name': '胡歌',
        'sex': '男',
        'stature': '180',
        'weight': '130',
        'tag': '我不急,彭于晏还没有找呢!'
    }
# 这里呢我们用我们的方法(.clear(self)意思就是清空字典)
info.clear()
# 输出我们的结果
print(info)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

5.2.3、这里我们用到方法三(.popitem(self)意思就是删除字典最后一对键值对)

# 这里呢我们定义一个info信息
info = {
        'name': '胡歌',
        'sex': '男',
        'stature': '180',
        'weight': '130',
        'tag': '我不急,彭于晏还没有找呢!'
    }
# 这里呢我们用我们的方法(.popitem(self)意思就是删除字典最后一对键值对)
info.popitem()
# 输出我们的结果
print(info)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

注意:
.popitem这个方法呢是删除最后一对键值对。
但是字典存储这个无序的概念是针对于字典的本身存储方法采用哈希算法。
这个也和python的版本有关。
python3.6后更改了dict的内部算法。
使得咱们使用的python3.7在展示时是有序的。
在内部存储数据的算法上的地址是无序的。
只是python3.7做了处理使得咱们看到的是有序的。
实际存储机构上是无序,不像列表一样是从0开始顺序排列。

5.3、字典的改

5.3、这里我们用到的方法是(.update()意思是直接传入一个键值对进行修改)

# 这里呢我们定义一个info信息
info = {
        'name': '菜魚',
        'sex': '男',
        'stature': '180',
        'weight': '130',
        'tag': '我不急,彭于晏和胡歌还没有找呢!'
    }
# 这里呢我们用我们的方法(.update()意思是直接传入一个键值对进行修改)
info.update({'sex': '女'})
# 输出我们的结果
print(info)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述
5.4、字典的查

5.4.1、这里我们用到的方法一是(.values(self) 意思就是查看所有的值)

# 这里呢我们定义一个info信息
info = {
        'name': '菜魚',
        'sex': '男',
        'stature': '180',
        'weight': '130',
        'tag': '我不急,彭于晏和胡歌还没有找呢!'
    }
# 这里呢我们用我们的方法(.values(self) 意思就是查看所有的值)
info.values()
# 输出我们的结果
print(info)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

5.4.2、这里我们用到的方法二是(.items )

# 这里呢我们定义一个info信息
info = {
        'name': '菜魚',
        'sex': '男',
        'stature': '180',
        'weight': '130',
        'tag': '我不急,彭于晏和胡歌还没有找呢!'
    }
# 这里呢我们用我们的方法(.items)输出后发现他把这个字典转换为一对一对的元组)
# 输出我们的结果
print(info.items())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述

5.4.3、这里我们用到的方法三是(len(__obj) 意思查看字典的长度)

# 这里呢我们定义一个info信息
info = {
        'name': '菜魚',
        'sex': '男',
        'stature': '180',
        'weight': '130',
        'tag': '我不急,彭于晏和胡歌还没有找呢!'
    }
# 这里呢我们用我们的方法(len(__obj) 意思查看字典的长度)
# 输出的意思是在info有五个键值对
print(len(info))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述

六、集合

6.1、集合的特性:
1、集合里面的元素不变
2、集合是天生的去重
3、集合是无序的

七、集合是什么,数据类型又是什么
解释:集合是一个有{}包裹起来的数据,类型是set

# 集合是一个有{}包裹起来的数据,类型是set
set1 = {1, 2, 3}
print(type(set1))
  • 1
  • 2
  • 3

在这里插入图片描述

八、集合的用法

# 这是我对三个网站爬取的年度电影TOP5
list1 = ['蜘蛛侠', '钢铁侠', '绿巨人', '美国队长', '喜羊羊']
list2 = ['蜘蛛侠', '神奇女侠', '绿巨人', '钢铁侠', '喜羊羊']
list3 = ['蜘蛛侠', '蚁人', '绿巨人', '美国队长', '熊出没']
list4 = list1 + list2 + list3
print(list4)
# 在三个网站电影中分别去除重复的
date = set(list4)
print(date)

# 取三个网站上都有的电影
# 集合可以进行关系运算
# & 这个符号是与运算符号,放在这里的意思就是我要进行一个与运算
# & 符号的意思是运算两边都有的数据
date = set(list1) & set(list2) & set(list3)
# 这里的意思是先把list1 和 list2进行运算找出都有的数据在和list3进行运算得出都有的数据
print(date)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述

八、集合的增删查

8.1、集合的增

8.1.1、方法一、(.add()意思是增加单个数据)

#  .add 增加单个数据
set1 = {'蜘蛛侠', '钢铁侠', '绿巨人', '美国队长', '喜羊羊'}
set1 .add('奥特曼')
print(set1)
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

8.1.1、方法二、(.update 增加多个数据传入的数据用[]括起来)

# .update 增加多个数据传入的数据用[]括起来
set1 = {'蜘蛛侠', '钢铁侠', '绿巨人', '美国队长', '喜羊羊'}
set1.update(['花园宝宝', '蚁人'])
print(set1)
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
8.2、集合的删

8.2.1、方法一、(remove 删除传入集合中的元素值)

set1 = {'蜘蛛侠', '钢铁侠', '绿巨人', '美国队长', '喜羊羊'}
# remove 删除传入集合中的元素值
set1.remove('蜘蛛侠')
print(set1)
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

8.2.2、方法二、(pop随机删除一个元素(用得少))

set1 = {'蜘蛛侠', '钢铁侠', '绿巨人', '美国队长', '喜羊羊'}
# pop随机删除一个元素(用得少)
set1.pop()
print(set1)
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
8.3、集合的查

在我们集合中只能用in做一个判断查询

set1 = {'蜘蛛侠', '钢铁侠', '绿巨人', '美国队长', '喜羊羊'}
# 查
# 只能用in做一个判断查询
# in
# True 正确的
# False 错误得
print('钢铁侠' in set1)
print('铠甲勇士' in set1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

九、扩展知识

set1 = {'蜘蛛侠', '钢铁侠', '绿巨人', '美国队长'}
set2 = {'西游记', '猪猪侠', '神奇四侠', '蜘蛛侠'}
# .update 可以将集合插入到另一个集合当中
set1.update(set2)
print(set1)

# .union 也可以将集合联合到另一个集合当中
set1.union(set2)
print(set1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/586534
推荐阅读
相关标签
  

闽ICP备14008679号