前言:python的基本数据类型可以分为三类:数值类型、序列类型、散列类型,本文主要介绍散列类型。

一、散列类型


散列类型:内部元素无序,不能通过下标取值

1)字典(dict):用 {} 花括号表示,每一个元素包含键(key)和值(value),key是一般是唯一的,如果重复最后的一个键值对会替换前面的,value不需要唯一。

2)集合(set):用 {} 花括号表示,存放一个个元素,可以是任意类型,但元素不允许重复。

注意:

d = {} 定义的是一个空字典

s = set() 定义的是一个空集合

二、字典dict


1.定义

1)用 {} 花括号表示,每一个元素包含键(key)和值(value),key是一般是唯一的,如果重复最后的一个键值对会替换前面的,value不需要唯一。

2)value可以取任何数据类型,但key是不可变的,新增键值对后,key不可以修改,单value可以修改。

2.字典的常用方法

1)增

  • dic[key]=value 无则创建,若已有对应的key存在则修改该键值对的value
  • update():将一个字典的所有元素更新到另一个字典中 (简单来说,就是添加多个元素)
# 字典 {key:value, key:value}   键/值对形式
# key是唯一的,是不可变类型数据
dic1 = {'name':'张三','age':18,'gender':'男'}
dic2 = {'a':11,'b':22} dic1['city'] = '广州' # 新增键值对
print(dic1) dic1['city'] = '上海' # 根据key修改值
print(dic1) # updata():添加多个键值对(将一个字典更新到一个字典中)
dic1.update(dic2)
print(dic1)
dic2.update({'c': 33, 'd': 44})
print(dic2)

2)删

  • pop():参数为字典的键(key)
  • popitem() :删除最后添加的键值对
  • clear():清空字典中的所有键值对
  • 关腱字del:del dic[key]
dic1 = {'name':'张三','age':18,'gender':'男','city':'广州'}

# pop():删除,需要传入一个键(key)
dic1.pop('gender')
print(dic1) # popitem():不需要传参,删除字典中最后添加进来的一个键值对
dic1.popitem()
print(dic1) # 关键字del
del dic1['age']
print(dic1) # clear():清除字典中的所有键值对
dic1.clear()
print(dic1)

运行结果:

C:\software\python\python.exe D:/myworkspace/test/test/test.py
{'name': '张三', 'age': 18, 'city': '广州'}
{'name': '张三', 'age': 18}
{'name': '张三'}
{} Process finished with exit code 0

3)改

dic[key]=value  通过键去修改值,在第一点中已经举出例子

4)查

  • get():获取键对应的值,但key不存在时不会报惜,会打印None
  • keys():获取所有的键,可以用list将结果转成列表
  • values():获取所有的值,可以用list将结果转换成列表
  • itmes(): 获取所有的键值对,可以用list将结果转换成列表,列表中每个键值对组成一个元组
dic1 = {'name':'张三','age':18,'gender':'男'}

# get():获取键对应的值
print(dic1.get('name'))
print('这是不存在的键值对:{}'.format(dic1.get('city'))) # keys():返回字典中所有的键
print(dic1.keys()) dic_key = dic1.keys()
print(list(dic_key)) # 通过list()把键以列表的形式输出 # values():返回字典中所有的值
print(dic1.values())
dic_value = dic1.keys()
print(list(dic_value)) # 通过list()把键以列表的形式输出 # items:返回字典中所有的键值对,每一个键值对都会打包成元组(key,value)
print(dic1.items())
dic_item = dic1.items()
print(list(dic_item))

运行结果:

C:\software\python\python.exe D:/myworkspace/test/test/test.py
张三
这是不存在的键值对:None
dict_keys(['name', 'age', 'gender'])
['name', 'age', 'gender']
dict_values(['张三', 18, '男'])
['name', 'age', 'gender']
dict_items([('name', '张三'), ('age', 18), ('gender', '男')])
[('name', '张三'), ('age', 18), ('gender', '男')] Process finished with exit code 0

三、集合set


1.定义

集合是由不重复元素组成的无序的集,常用来消除重复元素

注意:要创建一个空集合只能用set(),不能用用{},因为后者创建的是一个空字典

2.集合的常用方法

集合的方法比较简单,常用增加元素add,删除元素pop()、remove()

set1 = {1, 'python', 'a', 2, 'a', 3, 4, 'python', 5, 6}
print(set1) # 去掉重复的元素 li = [79, 1, 89, 3, 90, 5, 89, 321, 66, 7]
li = list(set(li)) # 利用set()转换成集合去重
print(li) dic = {} # 表示空字典, 空集合用set()
set1 = set()
print(type(dic), type(set1)) # type()是python内置函数,用于查看数据类型 set1.add(1)
set1.add(2)
print(set1)
set1.pop()
print(set1)
set1.remove(2)
print(set1)

运行结果:

C:\software\python\python.exe D:/myworkspace/test/test/test.py
{1, 2, 3, 4, 5, 6, 'python', 'a'}
[1, 321, 3, 66, 5, 7, 79, 89, 90]
<class 'dict'> <class 'set'>
{1, 2}
{2}
set() Process finished with exit code 0

7、python基本数据类型之散列类型的更多相关文章

  1. Redis数据类型之散列类型hash

    在redis中用的最多的就是hash和string类型. 问题 假设有User对象以JSON序列化的形式存储到redis中, User对象有id.username.password.age.name等 ...

  2. Redis自学笔记:3.3入门-散列类型

    3.3散列类型 3.3.1介绍 散列类型不能嵌套其他数据类型,一个散列类型可以包含至多232-1个字段 散列类型适合存储对象:使用对象类别和ID构成键名,使用字段表示对象的数据, 而字段值则存储属性值 ...

  3. redis数据类型-散列类型

    Redis数据类型 散列类型 Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他 ...

  4. 潭州课堂25班:Ph201805201 第六课:散列类型,运算符优先级和逻辑运算 (课堂笔记)

    # # 集合:# se1 = { 1,3,4,5,'a'} # 如果直接添加元素,不能直接添加可变元素# se2 = set() # 定义一个空集合# se3 = {'a'} # 定义个单元素的集合# ...

  5. Redis命令拾遗二(散列类型)

    本文版权归博客园和作者吴双共同所有,欢迎转载,转载和爬虫请注明原文地址 :博客园蜗牛NoSql系列地址  http://www.cnblogs.com/tdws/tag/NoSql/ Redis命令拾 ...

  6. Redis常用命令入门2:散列类型

    散列命令 散列类型的键值其实也是一种字典解耦,其存储了字段和字段值的映射,但字段值只能是字符串,不支持其他数据类型,所以说散列类型不能嵌套其他的数据类型.一个散列类型的键可以包含最多2的32次方-1个 ...

  7. Redis 入门 3.3 散列类型

    3.3.1 介绍   散列类型(hash)的键值也是一种字典结构,其储存了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据类型,换句话说,散列类型不能嵌套其他的数据类型.一个散列 ...

  8. Redis从基础命令到实战之散列类型(Hash)

    从上一篇的实例中可以看出,用字符串类型存储对象有一些不足,在存储/读取时需要进行序列化/反序列化,即时只想修改一项内容,如价格,也必须修改整个键值.不仅增大开发的复杂度,也增加了不必要的性能开销. 一 ...

  9. Redis 四:存储类型之散列类型

    1.散列类型表达方式简介: =========================================== 键 字段 值 =================================== ...

随机推荐

  1. Vue中的computed和watch

    看了网上很多资料,对vue的computed讲解自己看的都不是很清晰,今天忙里抽闲,和同事们又闲聊起来,对computed这个属性才有了一个稍微比较清晰的认识,下面的文章有一部分是转自: https: ...

  2. http://mirror2.openwrt.org/sources/

    http://mirror2.openwrt.org/sources/ Index of /sources/ ../ 1.0.4.3.arm 22-Dec-2008 20:29 93996 2.13. ...

  3. 【Ubuntu】查看端口占用及关闭

    1.查看已连接的服务端口 (ESTABLISHED) netstat有一个快捷键[ss] netstat -a ss -a 2.查看所有的服务端口(LISTEN,ESTABLISHED) netsta ...

  4. 学习Java第七周

    重要知识点 1.“super”的用法 构造器和方法,都用关键字super指向超类,但是用的方法不一样.方法用这个关键字去执行被重载的超类中的方法 2.接口和抽象类的异同 相同: 1.接口和抽象类都有抽 ...

  5. spring MVC 核心配置

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  6. python 给三个数字排序,不用sort函数

    # 给三个数字排序# 方法一def sort_d(a,b,c): if a>b: a,b=b,a # print (a,b) if b>c: b,c=c,b if a>b: a,b= ...

  7. 基于python的二分搜索和例题

    二分搜索 二分概念 二分搜索是一种在有序数组中查找某一特定元素的搜索算法. 搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束: 如果某一特定元素大于或者小于中间元素,则在数 ...

  8. python基础[18]——使用django创建一个简易的博客网站

    一.页面实现 index.html base.html post.html header.html footer.html <!-- index.html--> {% extends 'b ...

  9. jsp页面获取当前系统时间

    value="<% out.print(new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(n ...

  10. DEVOPS技术实践_19:Pipeline的多参数json调用

    在上一篇学习了把参数写进Json文件,然后通过去Json文件,调用参数的方法 1. 三元运算符介绍 调用的方法是通过一个三元运算符实现的 gender = prop.GENDER? prop.GEND ...