首页 > 其他分享 >09字典(dict)与集合(set)

09字典(dict)与集合(set)

时间:2023-04-12 21:33:35浏览次数:36  
标签:小明 set 09 集合 dict print data 字典

字典(dict)与集合(set)

字典的格式

>- dict_data = { key : value , key1 : value1 }
>- 1)符号以大括号表示
>- 2)数据是以键值对出现的,键值中间用冒号连接
>- 3)key的数据必须是不可变类型,key是不重复的
>- 字典是可变数据类型
>- 空字典 dict_data = {}或dict_data = dict()

  • 手动方式创建
# 有数据字典
dict1 = {'name': '张三', 'age': 20, 'gender': '男'}

> 注意:⼀般称冒号前⾯的为键(key),简称k;冒号后⾯的为值(value),简称v。

  • 使用内置函数dict()创建
a_dict = dict(name='DYX', age=24)  # 键=值对
print(a_dict)  # {'age': 24, 'name': 'DYX'}

字典的常规操作

字典没有索引,是无序的

字典可以根据key获取value

dict_data = {"小明": 20, "小芳": {"age": 18, "gender": "女"}}
print(dict_data["小芳"])      # {'age': 18, 'gender': '女'}
print(dict_data["小芳"]["gender"])    # 女

增加数据

dict_data = {"小明": 20}
dict_data["小芳"] = 18
print(dict_data)    # {'小明': 20, '小芳': 18}

字典修改

dict_data = {"小明": 20}
dict_data["小明"] = {"age": 18, "gender": "男"}
print(dict_data)    # {'小明': {'age': 18, 'gender': '男'}}

字典删除

dict_data = {"小明": 20}
del dict_data["小明"]
print(dict_data)	# {}

常用方法

方法 描述
get() 获取一个数据,如果存在则返回其value,不存在则返回None
pop() 删除指定key的数据
popitem() 删除字典的最后一个数据
update() 更新数据
keys() 获取字典是所有key,存放在以地dict_key对象里面
values() 获取字典中所有的value
items() 以列表返回可遍历的(键值)元组数组
clear() 清空字典中的数据
copy() 复制字典
# get() 获取一个数据,如果存在则返回其value,不存在则返回None
# None是可以改变的,当不存在时返回这个位置的数据,默认为None
dict_data = {"小明": 20}
print(dict_data.get("小明"))      # 20
# dict_data.get("小明", None)
print(dict_data.get("小明1"))     # None
# 修改None
print(dict_data.get("小明1", False))  # False

# pop() 删除指定key的数据
dict_data = {"小明": 20}
dict_data.pop("小明")
print(dict_data)    # {}

# popitem() 删除字典的最后一个数据
dict_data = {"小明": 20, "小芳": 18}
dict_data.popitem()
print(dict_data)   # {'小明': 20} 

# update() 更新数据
dict_data = {"小明": 20, "小芳": 18}
dict_data.update({"小刚": 19, "小李": 21})
print(dict_data)    # {'小明': 20, '小芳': 18, '小刚': 19, '小李': 21}

# keys() 获取字典是所有key,存放在以地dict_key对象里面
dict_data = {"小明": 20, "小芳": 18}
print(dict_data.keys())     # dict_keys(['小明', '小芳'])
print(type(dict_data.keys()))   # <class 'dict_keys'="">

# values() 获取字典中所有的value
dict_data = {"小明": 20, "小芳": 18}
print(dict_data.values())	# dict_values([20, 18])

# items() 以列表返回可遍历的(键值)元组数组
dict_data = {"小明": 20, "小芳": 18}
print(dict_data.items())   # dict_items([('小明', 20), ('小芳', 18)])

补充:压缩和解包

# 压缩 压缩数据到一个变量里面,以元组的方式存储
a = "小明", 18
print(a)    # ('小明', 18)
# 解包
name, age = a
print(name, age)    # 小明 18

dict_data = {"小明": 20, "小芳": 18}
print(dict_data.items()) # dict_items([('小明', 20), ('小芳', 18)])
for i in dict_data.items():
    print(i)
# ('小明', 20)
# ('小芳', 18)

# for i in dict_data.items():
#    print(i[0], i[1])
for name, age in dict_data.items():
    print(name, age)
# 小明 20
# 小芳 18
# 后面这两种方式输出结果一样,但推荐使用第二种解包的方式,这样变量有更明确的描述,方便使用

字典的循环遍历

# 遍历字典(不支持while循环)
# 方式1:通过获取到全部的key来完成遍历
for key in 字典.keys():
    print(f"字典的key是:{key}")
    print(f"字典的value是:{字典[key]}")
# 方式2:直接对字典进行for循环,每一次循环都是直接得到key
for key in 字典:
    print(f"字典的key是:{key}")
    print(f"字典的value是:{字典[key]}")

集合的格式

  • set_data =
  • 无序且唯一(数据不重复)
  • 集合没有索引和key,故集合不能修改数据

集合的常规操作

# 定义空集合
my_set_empty = set()	
特点:不能重复,且无序
注意:不支持下标索引访问

# 添加新元素
语法:集合.add(元素)

# 删除数据
语法:集合.remove(元素)

# 随机取出元素pop
语法:集合.pop()

# 取出两个集合的差集
语法:集合1.difference(集合2)
功能:取出集合1和集合2的差集(集合1有而集合2没有的)
结果:得到一个新集合,集合1和集合2不变

# 消除2个集合的交集
语法:集合1.difference_update(集合2)
功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素。
结果:集合1被修改,集合2不变

# 集合的合并
语法:集合1.union(集合2)
功能:将集合1和集合2组合成新集合
结果:得到新集合,集合1和集合2不变

# 集合的遍历
注意:集合不支持下标,不能用while循环,可以用for循环
```</class>

标签:小明,set,09,集合,dict,print,data,字典
From: https://www.cnblogs.com/daguo118/p/17311358.html

相关文章

  • 更新 Python 的 setuptools 包
    [......
  • SQL concat_ws, collect_set, 和explode合并使用
    1.背景有一个这样的数据集:字段和字段的值是两列目的是将这个数据转换成规整的一个特征是一列的数据:2.做法第一步:先造出列selectucid,CASEWHENtype='性别'THENlabelend`性别`,CASEWHENtype='产品'THENlabelend`产品`,CASEWHENtype='还款表现'THEN......
  • memset初始化类对象出错解析
    void*memset(void*s,intv,size_tn); 英文释义如下:Copiesthevaluev(convertedtotypeunsignedchar)tothefirstnbytespointedtobys;returnss. 这里s可以是数组名,也可以是指向某一内在空间的指针;v为要填充的值;n为要填充的字节数,通常为sizeof(s);使用memset......
  • 五、基于PVC+StatefulSet实现的MySQL主从架构
    案例(部署mysql)本节使用StatefulSet控制器部署一个MySQL集群,然后进行宕机测试,观察集群是否可以正常恢复使用并且不丢失数据。实现的集群有如下特征:是一个主从复制的MySQL集群1个主节点,多个从节点从节点能够水平扩展所有的写操作,只能在主节点上执行......
  • k8s-StatefulSet
    1、StatefulSet介绍RC、Deployment、DaemonSet都是面向无状态的服务,它们所管理的Pod的IP、名字,启停顺序等都是随机的,而StatefulSet是什么?顾名思义,有状态的集合,管理所有有状态的服务,比如MySQL、Bmongo复制集,rediscluster,rabbitmqcluster集群等。StatefulSet本质上是Deploym......
  • UVa 113 / POJ 2109 Power of Cryptography (使用double处理大整数&泰勒公式与误差分
    113-PowerofCryptographyTimelimit:3.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=99&page=show_problem&problem=49http://poj.org/problem?id=2109题意:给出n和p,求出 ,但是p可以很大()如何存储p?不用大数可不可以?先看看double......
  • 多通道振弦传感器无线采集仪参数配置工具SETP简单介绍
    多通道振弦传感器无线采集仪参数配置工具SETP简单介绍参数配置工具SETP是专门为VS系列多通道振弦采发仪开发的软件程序,可完成设备内部所有参数的读取和修改工作,也可当做简单的通道数据读取工具来使用。运行配置工具双击SETP.exe运行程序,如下图所示。界面组成如上图所示,......
  • c#-HashSet
    staticvoidMain(string[]args){string[]cities=newstring[]{"Delhi","Kolkata","NewYork","London","Tokyo","Washington",......
  • 「Solution Set」4.11 小记
    P3642[APIO2016]烟火表演我不太会证明凸性。像这道题就是列出DP方程,\(f_{u,x}\)表示以\(u\)为根的子树还有\(x\)分钟就全爆炸的最小代价。然后赌它是个凸函数((因为它有\(sum\),就是两个下凸函数相加,还是下凸的。然后求前缀的最小值再加一个函数一类的,所以考虑之后这......
  • set集合(LinkedHashse,Hashset)
      set集合的特点:  哈希值:    当链表长度大于8而且数组长度大于等于64,那么链表会自动转化为红黑树  底层原理细节:  Hashset的去重原因:  Hashset的无索引原因:因为底层是数组+链表+红黑树Hashset的无序原因:因为它是从0索引查找,如果为nul......