python字典

1. 简介:

字典是一种键映射到值的数据结构,相当于高级一点的列表, 列表的键只能是0到n的整数,通过数字的索引我们就能访问,修改到相关位置的数据, 字典也一样, 高级的地方就在于, 索引不是系统分配的整数, 而是可以使用自定义的内容来做访问的索引值, 这种特性给编程带来极大的便利,值得注意的是python字典的键必须是不可变的,所以可以用数字,字符串或元组充当,但是不能使用列表,因为列表中的元素可能被无意修改 值可以是任意数据类型, 还有非常重要的一点就是字典内容的存储顺序是无序的,

2. 定义:

定义字典时键与值之间用冒号(:)隔开, 键值对之间用逗号(,)隔开, 将所有完整的键值对放在花括号中({}),就实现的字典的初始化定义, 也可以使用dict()将其他内容转为字典.

d1 = {'one': 1, 'two': 2, 'three': 3} #定义字典
d2 = {} #定义空字典
#使用其他数据生成字典
d3 = dict(one=1, two=2, three=3)
d4 = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
d5 = dict([('two', 2), ('one', 1), ('three', 3)])
d6 = dict({'three': 3, 'one': 1, 'two': 2})

3. 访问与修改:

dict0 = {"name":"Bob", "sex":"F", "age":21} #初始化字典

#向字典中插入新的元素,类似于c++的map
dict0["addr"] = "chongqing" #想dict0字典中添加地址"addr"项, 值为"chongqing"

#如果使用字典中已经存在的key,那么后面的值将会替换前面的值,这里会将年龄替换为22
dict0["age"] = 22

#访问字典中的键"name"对应的值
name = dict0["name"] #和列表访问方式一样

#使用get()函数访问第几个条目
t = dict3.get(2)
3.1 删除条目
del dict0["name"] #删除"name"这一项
dict0.clear() #删除字典中的所有内容,即设为空字典
del dict0 #直接删除字典,这个东西就从世界上消失了
t = dict3.pop(1) #pop()函数将会删除字典的键值对,并返回该值

4. 遍历字典

print(dict0) #按输出key-value对, 输入内容和定义时一样的
#使用print(d1)输出的内容如下
    {'two': 2, 'one': 1, 'three': 3}

#如果我们使用:
for x in dict0:
    print(x)

#输出的值只有所有键的值, 而不是字典中所有的键值对, 再额外输出dict0[x], 就能输出键值对了
for x in dict0:
    print(x + " : " + repr(dict0[x]))

#因为字典中的每项是以tuple存储的, 亦可以使用如下方式遍历输出:
for x in dict0:
    print(str(x[0]) + "->" + str(x[1]))

#输出所有键
for x in dict0.keys():
    print(x)

#输出所有值
for x in dict0.values():
    print(x)

#输出键值对
for x in dict0.items:
    print(x)

5. 比较与排序

#比较两个字典是否相同
print(dict1 == dict2)

from operator import itemgetter
#定义新的字典
d = {'a':2, 'b':23, 'c':5, 'd':17, 'e':1}

#对字典按键升序排序
print("按键升序排序")
#分别获取容器,容器中单元的排序关键字,下标0,即d[0],表示键,d[1]表示值
sd = sorted(d.items(), key = lambda d:d[0])

#对字典按键降序序排序
print("按键降序序排序")
sd = sorted(d.items(), key = lambda d:d[0], reverse = True)

#对字典按值升序排序
print("按值升序排序")
sd = sorted(d.items(), key = lambda d:d[1], reverse = False)

#对字典按值降序排序
print("按值降序排序")
sd = sorted(d.items(), key = lambda d:d[1], reverse = True)


注意:reverse的参数默认是False,即升序排序,要逆序排序请将reverse值该为True,包括sort函数,也可以传递reverse参数设定排序方式

6. 其他

6.1 输出字典中的item的数量

print(len(dict1))

6.2 得到字典的浅复制,即修改复制的字典不会影响到原有的字典

dict3 = dict1.copy()

6.3 “key” in “dict name”判断是否已经包含某个键,功能和c++ map对象的count()一致

print(1 in dict0) #返回bool值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值