day03.10

python数据类型之字典dict的内置方法

类型转换:

info = dict([['name', 'tony'], ('age', 18)])  # 列表形式转换为字典形式
print(info)  # {'name': 'tony', 'age': 18}
info = {}.fromkeys(('name', 'age', 'sex'), 123)    # fromkeys会从元组中取出每个值当做key,然后与数值123组成key:value放到字典中
print(info)    # {'name': 123, 'age': 123, 'sex': 123}
  • 按key取值

复制代码
d1 = {
    'name': 'jason',
    'age': 18,
    'hobbies': ['play game', 'basketball']
    }
print(d1['name'])    # jason    键存在
print(d1['fgd'])    # key不存在直接报错
print(d1.get('name'))  # jason  键存在
print(d1.get('xxx'))  # None  键不存在不会报错 而是返回None
print(d1.get('xxx', '这个键不存在'))  # 第二个参数不写默认返回None 写了则输出写了的内容
print(d1.get('name', '这个键不存在')) # 如果键存在 则不需要使用到第二个参数
复制代码
  • 修改字典当中的数值

字典也是可变的数据类型,修改字典当中的数值

d1 = {
    'name': 'jason',
    'age': 18,
    'hobbies': ['play game', 'basketball']
    }
print(id(d1))    # 2251867669416   id,即内存地址
d1['name'] = 'jasonDSB'  # 键存在是修改值,修改key所对应的v值
print(d1, id(d1))    # {'name': 'jasonDSB', 'age': 18, 'hobbies': ['play game', 'basketball']} 2251867669416
  • 添加键值对

d1 = {
    'name': 'jason',
    'age': 18,
    'hobbies': ['play game', 'basketball']
}
d1['pwd'] = 123  # 键不存在则是新增一个键值对
print(d1)    # {'name': 'jason', 'age': 18, 'hobbies': ['play game', 'basketball'], 'pwd': 123}
  • 统计字典当中的键值对的个数

d1 = {
    'name': 'jason',
    'age': 18,
    'hobbies': ['play game', 'basketball']
}
print(len(d1))  # 3
  • 字典当中的成员运算

字典当中的成员运算,只能用来判断key知否存在,其输出结果是以布尔值的方式出现

d1 = {
    'name': 'jason',
    'age': 18,
    'hobbies': ['play game', 'basketball']
}
print('jason' in d1)  # False
print('name' in d1)  # True
  • 删除字典当中的键值对

d1 = {
    'name': 'jason',
    'age': 18,
    'hobbies': ['play game', 'basketball']
}
del d1['name']  # 通用的删除方式
print(d1)    # {'age': 18, 'hobbies': ['play game', 'basketball']}
  • 获取字典当中所有的key、value、key:value

d1 = {
    'name': 'jason',
    'age': 18,
    'hobbies': ['play game', 'basketball']
}
print(d1.keys())  # dict_keys(['name', 'age', 'hobbies'])  可以看成是列表
print(d1.values())  # dict_values(['jason', 18, ['play game', 'basketball']])  可以看成是列表
print(d1.items())  # dict_items([('name', 'jason'), ('age', 18), ('hobbies', ['play game', 'basketball'])])  可以看成是列表套元组,一个元组对应一个键值对

python数据类型之元组tuple的内置方法

类型转换:

元组可以转换所有支持for循环的数据类型(列表、字典、集合、字符串)【整形和浮点型以及布尔值不可以转换】

t1 = (11, 22, 33, 44, 55, 66, [22, 33, 44])
print(t1[6])  # [22, 33, 44]
t1 = (11, 22, 33, 44, 55, 66, [22, 33, 33])
print(t1[6])  # [22, 33, 33]

 

  • 元组的索引取值

t1 = (11, 22, 33, 44, 55, 66)
print(t1[0])    # 11   从左到右
print(t1[-1])    # 66    -1代表从右往左
  • 切片操作

t1 = (11, 22, 33, 44, 55, 66)
print(t1[1:4])    # (22, 33, 44)  索引从1到4,前闭后开
print(t1[-1:-4:-1])    # (66, 55, 44)    间隔为1,从右到左
print(t1[-4:-1])    # (33, 44, 55)    索引从-4到-1,间隔为1
  • 间隔

t1 = (11, 22, 33, 44, 55, 66)
print(t1[1:4:2])  # (22, 44)   索引从1到4,间隔为2
  • 统计元组内的元素个数

t1 = (11, 22, 33, 44, 55, 66)
print(len(t1))  # 6    判断元素个数
  • 成员运算

成员运算结果是布尔值

t1 = (11, 22, 33, 44, 55, 66)
print(11 in t1)  # True   
  • 统计某个元素出现的次数

t1 = (11, 22, 33, 44, 55, 66)
print(t1.count(22))    # 1   22只出现了一次
  • 元组内元素不能"修改": 元组内各个索引值指向的内存地址不能修改

python数据类型之集合set的内置方法

类型转换:

s1 = {1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 3, 2, 2, 1, 2, 3, 2, 3, 4, 3, 2, 3}
print(s1)  # {1, 2, 3, 4}
l = ['a', 'b', 1, 'a', 'a']
s1 = set(l)
l = list(s1)
print(l)  # ['b', 'a', 1]   集合内部是无序的
print(set(11))  # 报错
print(set(11.11))  # 报错
print(set('jason'))    # {'n', 'j', 'o', 'a', 's'}
print(set([11, 22, 33, 44]))    # {33, 11, 44, 22}
print(set({'name': 'jason'}))    # {'name'}
print(set((11, 22, 33)))    # {33, 11, 22}
print(set(True))  # 报错
  • 去重功能

集合内不能出现重复的元素(自带去重特性),如果有重复元素存在的话,转为集合类型的时候会自动取出重复的元素

s1 = [11, 23, 33, 44, 44, 55, 23, 67]
print(set(s1))    # {33, 67, 11, 44, 23, 55}

 

  • 关系运算

判断两个群体的差异,有什么相同点,有什么不同点

f1 = {'jason', 'kevin', 'tony', 'jerry'}  # 小李的好友列表
f2 = {'jason', 'tom', 'jerry', 'jack'}  # 小王的好友列表
print(f1 & f2)  # {'jerry', 'jason'}    # 两人的共同好友
print(f1 - f2)  # {'kevin', 'tony'}    # f1单独有的数据
print(f1 | f2)  # {'kevin', 'jack', 'tom', 'jason', 'jerry', 'tony'}    # f1和f2的合集
print(f1 ^ f2)  # {'jack', 'tony', 'tom', 'kevin'}     f1和f2单独有的数据的合集

垃圾回收机制

引用计数:

内存中数据身上绑定的变量名的个数,python会将引用计数为0的数据清除,引用计数反应了程序运行过程中变量数据的引用次数

标记清除:

当内存空间即将溢出(满了)的时候,python会自动启动应急机制停止程序的运行 ,挨个检查值的引用计数,并给计数为0的数据打上标记然后一次性清理掉

分代回收:

根据值存在的时间长短,可以将值划分为不同的等级,等级越高,也就代表着引用技术越高,检索清理的间隔越长


posted @   *sunflower*  阅读(56)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示