字典

字典

1. 可变类型与不可变类型

可以通过两种方法判断是否可变

  • 通过id(对象)观察, 如果对对象作出改变后, id值不变, 那么该对象为可变对象, 否则为不可变对象
  • 通过hash(对象)判断对象是否能够被哈希, 如果能那么是不可变类型, 否则为可变类型

2. 字典概念

语法:

dict = {key1:value1, key2:value2, ...}
  1. 字典是python里唯一一个映射类型, 字符串, 元组, 列表属于序列类型
  2. 字典以关键字为索引, 序列以连续的整数为索引
  3. 字典的key应为不可变类型, 且每个键不能重复
  4. 字典内的键值对排列是无序的
  5. 数值, 字符串, 元组可以当做key, 但是列表, 字典, 集合不能当做key

3. 字典特性

  1. 依靠关键字查询, 查询和插入速度极快
  2. 查询速度与插入速度不会因为键的增加而增加
  3. 会占有大量内存

创建和范文字典

# 字典的创建
dict = {}  # 创建一个空字典
dict = dict()  # 创建一个空字典
dict = {key1:value1, key2:value2, ...}  # 创建一个有值字典
dict = dict(mapping)  
# 例子: -----------------------------------
dic1 = dict([('apple', 4139), ('peach', 4127), ('cherry', 4098)])
print(dic1)  # {'cherry': 4098, 'apple': 4139, 'peach': 4127}
dict = (**kwargs)  # 该种情况下, 键只能为字符串, 且不能加引号, 否则报错
# 例子
dic = dict(name='Tom', age=10)
print(dic)  # {'name': 'Tom', 'age': 10}
#  ----------------------------------------
dict.fromkeys(seq[, value])  # 创建一个新字典, 以seq中的每一个元素作为key, value作为所有键的初始值
# 例子----------------------------------
seq = ('name', 'age', 'sex')
dic1 = dict.fromkeys(seq)
print(dic1)
# {'name': None, 'age': None, 'sex': None}

dic2 = dict.fromkeys(seq, 10)
print(dic2)
# {'name': 10, 'age': 10, 'sex': 10}

dic3 = dict.fromkeys(seq, ('小马', '8', '男'))
print(dic3)
# {'name': ('小马', '8', '男'), 'age': ('小马', '8', '男'), 'sex': ('小马', '8', '男')}
# -------------------------------------------
# 字典的访问
value = dict[key]  # 通过key直接访问value
value = dict.get(key[, default=None])  # 通过key访问value, 如果不存在该key, 那么就会返回default
# 字典键值对的添加和设置
dict[key] = value  # 直接添加, 如果字典已经存在key, 那么会自动覆盖之前的value
dict.setdefault(key[, default=None])  # 可以设置字典键的值, 如果字典内不存在, 那么会自动添加该键, 值为default

# 字典键值对的删除
dict.pop(key[, default])  # 删除key对应的键值对, 并返回值, 如果键不存在, 那么会返回defau
del dict[key]  # 删除对应键值对, 如果字典不存在该键, 会报错
dict.popitem()  # 随机删除一对键值对, 并以(key, value)的形式返回该键值对
dict.clear()  # 清楚dict内的所有键值对

字典的内置方法

  • dict.keys()返回一个可迭代对象, 可以通过list()方法使其变为一个列表, 获取字典的所有键
  • dict.values()返回一个可迭代对象, 通过list()获取字典中的所有值
  • dict.items()返回以(key, value)为元素的列表, 内含字典所有键值对
  • in, not in 可以判断字典是否包含该键
  • dict.copy()浅拷贝字典
  • dict1.update(dict2) 把字典2更新进字典1, 如果字典1的键与字典2的键相同, 把该键的值更新

练习题

1、字典基本操作

字典内容如下:

dic = {
    'python': 95,
    'java': 99,
    'c': 100
    }

用程序解答下面的题目
字典的长度是多少

i = len(dic)  # i = 3

请修改’java’ 这个key对应的value值为98

dic["java"] = 98

删除 c 这个key

del dic["c"]
dic.pop("c")

增加一个key-value对,key值为 php, value是90

dic["php"] = 90
dic.setdefault("php", 90)

获取所有的key值,存储在列表里

list = list(dic.keys())

获取所有的value值,存储在列表里

list = list(dic.values())

判断 javascript 是否在字典中

bool = "javascript" in dic

获得字典里所有value 的和

list = list(dic.values())
sum(list)

获取字典里最大的value

list = list(dic.values())
max(list)

获取字典里最小的value

list = list(dic.values())
min(list)

字典 dic1 = {‘php’: 97}, 将dic1的数据更新到dic中

dic.update(dic1)
dict = data["python"]
list1 = list(dict.keys())
for x in list1:
    dict[x] = int(dict[x])
i = 0
while i < len(data["c++"]):
    data["c++"][i] = int(data["c++"][i])
    i += 1
list2 = data["java"]
for dict in list2:
    list3 = list(dict.keys())
    for x in list3:
        dict[x] = int(dict[x])
print(data)
i += 1

list2 = data[“java”]
for dict in list2:
list3 = list(dict.keys())
for x in list3:
dict[x] = int(dict[x])
print(data)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值