Python字典

9.1 字典定义及相关操作

  • 字典概念
  • 什么是可变和不可变数据类型?
  • 字典的定义
  • 字典的操作

code:

# *******************************************************************
"""
字典:也是一种数据的集合,由键值对组成的数据集合,字典中的键不能重复
    字典中的键必须是不可变的数据类型,常用的键主要是:字符串、整型
什么是可变和不可变数据类型?
    不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变。字符串、数字、元组。
    可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变。列表、字典、集合。
字典的定义:
    1.字典可以通过将以逗号分隔的 键: 值 对列表包含于花括号之内来创建
    2.通过dict()函数来创建
    3.dict()函数强制类型转换---列表或元组,并且是二级容器才可以转换
    4.zip()压缩函数,dict转类型
字典的操作:
    +---字典不能相加 not allowed
    *---字典不能相乘 not allowed
    获取元素 allowed
    修改元素 allowed---修改value,不能修改键值
    删除元素 allowed---del keyword
    添加元素 allowed---如果添加元素与其他键值重复的话,就会用新的数据覆盖旧的数据
    in---检测键值是否存在,存在返回True,不存在返回False
    not in---检测键值是否不存在,存在返回False,不存在返回True
    len(dict)---计算长度(有多少键值对)
    dict.keys()---获取所有的键值--返回键值组成的列表
    dict.values()---获取所有的value---返回value组成的列表
    dict.items()---获取所有的键值对 key and value
"""
print("字典定义***********************************************")
dictvar = {'a':1,'b':2}
print(f"dictvar = {dictvar},type(dictvar) = {type(dictvar)}")
dictvar1 = dict(name="Jasmine",sex="man",year=22)
print(f"dictvar1 = {dictvar1},type(dictvar1) = {type(dictvar1)}")
listvar = [[1,2],[2,3],[3,4]]
dictvar2 = dict(listvar)
print(f"dictvar2 = {dictvar2},type(dictvar2) = {type(dictvar2)}")
varlist1 = [1,2,3,4]
varlist2 = ['a','b','c','d']
var = zip(varlist1,varlist2)
dictvar3 = dict(var)
print(f"dictvar3 = {dictvar3},type(dictvar3) = {type(dictvar3)}")
print("字典操作***********************************************")
dictvardata = {'name':"Jasmine",'class':"human",'sex':"girl","year":"22"}
print(f"dictvardata = {dictvardata},type(dictvardata) = {type(dictvardata)}")
print(f"dictvardata['name'] = {dictvardata['name']}")
dictvardata['name'] = 'lily'  # 更新元素
print(f"dictvardata = {dictvardata},type(dictvardata) = {type(dictvardata)}")
del dictvardata['class']  # 删除元素
print(f"dictvardata = {dictvardata},type(dictvardata) = {type(dictvardata)}")
dictvardata['math'] = '99'  # 添加元素
print(f"dictvardata = {dictvardata},type(dictvardata) = {type(dictvardata)}")
print(f"'math' in dictvardata = {'math' in dictvardata}")  # in
print(f"'math' not in dictvardata = {'math' not in dictvardata}")  # not in
print(f"len(dictvardata) = {len(dictvardata)}")  # len()
print(f"dictvardata.keys() = {dictvardata.keys()}")  # keys()
print(f"dictvardata.values() = {dictvardata.values()}")  # values()
print(f"dictvardata.items() = {dictvardata.items()}")  # items()
for k,v in dictvardata.items():  # items()应用
    print(k,v,end=' ')

运行结果:

E:\Programs_Way\Python\python.exe D:/Prj/Python/Study_Basic_Grammar/_43dict_definition_operation.py
字典定义***********************************************
dictvar = {'a': 1, 'b': 2},type(dictvar) = <class 'dict'>
dictvar1 = {'name': 'Jasmine', 'sex': 'man', 'year': 22},type(dictvar1) = <class 'dict'>
dictvar2 = {1: 2, 2: 3, 3: 4},type(dictvar2) = <class 'dict'>
dictvar3 = {1: 'a', 2: 'b', 3: 'c', 4: 'd'},type(dictvar3) = <class 'dict'>
字典操作***********************************************
dictvardata = {'name': 'Jasmine', 'class': 'human', 'sex': 'girl', 'year': '22'},type(dictvardata) = <class 'dict'>
dictvardata['name'] = Jasmine
dictvardata = {'name': 'lily', 'class': 'human', 'sex': 'girl', 'year': '22'},type(dictvardata) = <class 'dict'>
dictvardata = {'name': 'lily', 'sex': 'girl', 'year': '22'},type(dictvardata) = <class 'dict'>
dictvardata = {'name': 'lily', 'sex': 'girl', 'year': '22', 'math': '99'},type(dictvardata) = <class 'dict'>
'math' in dictvardata = True
'math' not in dictvardata = False
len(dictvardata) = 4
dictvardata.keys() = dict_keys(['name', 'sex', 'year', 'math'])
dictvardata.values() = dict_values(['lily', 'girl', '22', '99'])
dictvardata.items() = dict_items([('name', 'lily'), ('sex', 'girl'), ('year', '22'), ('math', '99')])
name lily sex girl year 22 math 99 
Process finished with exit code 0

9.2 字典相关函数

code:

# ********************************************************************
"""
字典相关函数:
    in---检测键值是否存在,存在返回True,不存在返回False
    not in---检测键值是否不存在,存在返回False,不存在返回True
    len(dict)---计算长度(有多少键值对)
    dict.keys()---获取所有的键值--返回键值组成的列表
    dict.values()---获取所有的value---返回value组成的列表
    dict.items()---获取所有的键值对 key and value
    list(d)---返回字典d中使用的所有键的列表。
    iter(d)---返回以字典的键为元素的迭代器。 这是iter(d.keys())的快捷方式。
    dict.get(key[, default])---如果key存在于字典中则返回key的值,否则返回default。如果default未给出则默认为 None,因而此方法绝不会引发 KeyError。
    dict.update([other])---所给键值存在则更新,不存在则添加元素。
                           update() 接受另一个字典对象,或者一个包含键/值对(以长度为二的元组或其他可迭代对象表示)的可迭代对象。
    setdefault(key[, default])---如果字典存在键key,返回它的值。如果不存在,插入值为default的键 key ,并返回default。default默认为None。
    pop(key[, default])---如果key存在于字典中则将其移除并返回其值,否则返回default。如果default未给出且key不存在于字典中,则会引发 KeyError。
    reversed(d)---返回一个逆序获取字典键的迭代器。这是reversed(d.keys())的快捷方式。
    popitem()---从字典中移除并返回一个(键, 值)对。键值对会按LIFO的顺序被返回。
                popitem()适用于对字典进行消耗性的迭代,这在集合算法中经常被使用。
                如果字典为空,调用 popitem() 将引发 KeyError。
    clear()---移除字典中的所有元素。
    copy()---返回原字典的浅拷贝。
"""
dictvardata = {'name':"Jasmine",'class':"human",'sex':"girl","year":"22"}
print("list()**********************************************************")
print(f"list(dictvardata) = {list(dictvardata)}")  # list()
print("iter()**********************************************************")
print(f"iter(dictvardata) = {iter(dictvardata)}")  # iter()
print(f"list(iter(dictvardata)) = {list(iter(dictvardata))}")
print("get()**********************************************************")
print(f"dictvardata.get('name') = {dictvardata.get('name')}")  # get()
print(f"dictvardata.get('bbala') = {dictvardata.get('bbala')}")
print("update()**********************************************************")
dictvardata.update(name='lili',year='18',baba='luohui')  # update()
print(f"dictvardata = {dictvardata}")
dictvardata.update([[1,2],[3,4],[5,6]])
print(f"dictvardata = {dictvardata}")
print("pop()**********************************************************")
dictvardata.pop(1)  # pop()
print(f"dictvardata = {dictvardata}")
print("popitem()**********************************************************")
dictvardata.popitem()  # popitem
print(f"dictvardata = {dictvardata}")
dictvardata.popitem()  # popitem
print(f"dictvardata = {dictvardata}")
print("reversed()**********************************************************")
print(f"reversed(dictvardata) = {reversed(dictvardata)}")  # iter()
print(f"list(reversed(dictvardata)) = {list(reversed(dictvardata))}")
print("copy()**********************************************************")
x = dictvardata.copy()
print(f"x = {x}")
print("clear()**********************************************************")
dictvardata.clear()
print(f"dictvardata = {dictvardata}")

运行结果:

E:\Programs_Way\Python\python.exe D:/Prj/Python/Study_Basic_Grammar/_44dict_functions.py
list()**********************************************************
list(dictvardata) = ['name', 'class', 'sex', 'year']
iter()**********************************************************
iter(dictvardata) = <dict_keyiterator object at 0x000001B66FC9BD10>
list(iter(dictvardata)) = ['name', 'class', 'sex', 'year']
get()**********************************************************
dictvardata.get('name') = Jasmine
dictvardata.get('bbala') = None
update()**********************************************************
dictvardata = {'name': 'lili', 'class': 'human', 'sex': 'girl', 'year': '18', 'baba': 'luohui'}
dictvardata = {'name': 'lili', 'class': 'human', 'sex': 'girl', 'year': '18', 'baba': 'luohui', 1: 2, 3: 4, 5: 6}
pop()**********************************************************
dictvardata = {'name': 'lili', 'class': 'human', 'sex': 'girl', 'year': '18', 'baba': 'luohui', 3: 4, 5: 6}
popitem()**********************************************************
dictvardata = {'name': 'lili', 'class': 'human', 'sex': 'girl', 'year': '18', 'baba': 'luohui', 3: 4}
dictvardata = {'name': 'lili', 'class': 'human', 'sex': 'girl', 'year': '18', 'baba': 'luohui'}
reversed()**********************************************************
reversed(dictvardata) = <dict_reversekeyiterator object at 0x000001B66FC9BF40>
list(reversed(dictvardata)) = ['baba', 'year', 'sex', 'class', 'name']
copy()**********************************************************
x = {'name': 'lili', 'class': 'human', 'sex': 'girl', 'year': '18', 'baba': 'luohui'}
clear()**********************************************************
dictvardata = {}

Process finished with exit code 0

9.3 字典推导式

code:

# ***********************************************************************
# 字典推导式
# 把字典中的键值对位置进行交换
vardict = {'a':1,'b':2,'c':3}
print(f"vardict = {vardict}")
newdict = {v:k for k,v in vardict.items()}
print(f"newdict = {newdict}")

运行结果:

E:\Programs_Way\Python\python.exe D:/Prj/Python/Study_Basic_Grammar/_45dict_comprehension.py
vardict = {'a': 1, 'b': 2, 'c': 3}
newdict = {1: 'a', 2: 'b', 3: 'c'}

Process finished with exit code 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jasmine-Lily

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

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

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

打赏作者

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

抵扣说明:

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

余额充值