1:字典
创建字典的方式;
1直接创建:d={'name':'zhangsan',age:18},不能使用相同的key和不同的value,否则后者会代替前者;
2内置函数:zip的使用
# coding:utf-8
l1 = [10, 20, 30, 40]
l2 = ['cat', 'dog', 'pet', 'zoo']
ans = zip(l1, l2)#ans得到的是一个zip对象,直接输出也不可看:<zip object at 0x000001D8E18C7C40>
print(ans)
#print(list(ans))#[(10, 'cat'), (20, 'dog'), (30, 'pet'), (40, 'zoo')]
d = dict(ans)
print(d)#{10: 'cat', 20: 'dog', 30: 'pet', 40: 'zoo'}
使用list可以把我们的对象转换成一个列表并输出,如果想要以字典形式输出,我们就得把他转成字典的形式;zip函数的作用是一个映射,意为把前面的东西当成key映射后面的value
3使用参数创建字典
# coding:utf-8
d = dict(cat=10, dog=20)#这里的cat是key,不需要引号
print(d)
4:字典属于序列,所以我们可以使用len来计算字典的长度,因为是一一对应的,所以len只计算key的长度,其实也是value的长度
# coding:utf-8
d = dict(cat=10, dog=20)#这里的cat是key,不需要引号
print(d)
print(len(d))#2
5:删除字典:del 字典变量
6:字典元素的遍历与访问
访问:
# coding:utf-8
d = {'hello':10, 'world':20, 'python':30}
print(d['hello'])
print(d.get('hello'))
#print(d['Java'])#报错
print(d.get('Java'))#输出None
这是两种获取python里元素的方法,可以根据key打印出value,但是如果输入里面没有的key的话,第一种方法我们使用的话会报错,而第二种会显示None表示没有;
7:使用元组获取key和value
# coding:utf-8
d = {'hello':10, 'world':20, 'python':30}
for i in d.items():
print(i)
'''
('hello', 10)
('world', 20)
('python', 30)
'''#使用一个变量获取的是元组;
for i, j in d.items():
print(i, j)
'''
hello 10
world 20
python 30
'''#使用两个变量获取的分别是key和value
这两种方法都可以遍历字典的内容, 实际运用的时候我们可以根据情况进行选择;
8:对字典的操作
创建字典冰箱其中添加关键字
# coding:utf-8
d1 = {'hello': 10, 'world': 20, 'python': 30}
d2 = {'are': 50, 'you': 60}
d1['how'] = '40'#字典的添加
print(d1)
d1.update(d2)#字典的合并
print(d1)#{'hello': 10, 'world': 20, 'python': 30, 'how': '40', 'are': 50, 'you': 60}
keys = d1.keys()
print(keys)#dict_keys(['hello', 'world', 'python', 'how', 'are', 'you'])
print(list(keys))#['hello', 'world', 'python', 'how', 'are', 'you']
使用keys获取的是字典里面所有关键字,直接打印的话得到的使字典的内部类型,字典键,专门用于表示键,这个时候我们可以使用内置函数将他转换列表或者元组进行输出,具体方法是使用list列表转换函数或者tuple元组转换函数进行转换之后输出
9:获取value的方法与上述同理
# coding:utf-8
d1 = {'hello': 10, 'world': 20, 'python': 30}
d2 = {'are': 50, 'you': 60}
d1.update(d2)#字典的合并
valuess = d1.values()
print(valuess)#dict_values([10, 20, 30, 50, 60])
print(tuple(valuess))#(10, 20, 30, 50, 60)
10:我们可以使用一种特殊的方法来获取字典的内容
# coding:utf-8
d1 = {'hello': 10, 'world': 20, 'python': 30}
d2 = {'are': 50, 'you': 60}
d1.update(d2)#字典的合并
itemss = d1.items()
print(list(itemss))#[('hello', 10), ('world', 20), ('python', 30), ('are', 50), ('you', 60)]
print(tuple(itemss))#(('hello', 10), ('world', 20), ('python', 30), ('are', 50), ('you', 60))
这时候items得到的是字典的内部类型,但是我们可以使用list或者是tuple转换,得到的是以元组形式存储在列表或者是元组的键值对
11:这个时候我们得到了上述的数据类型,我们可以使用dict函数将其反转回去,这对于py来说是非常方便的事情;
12:使用pop函数,我们来直接查看用法
# coding:utf-8
d1 = {'hello': 10, 'world': 20, 'python': 30}
d2 = {'are': 50, 'you': 60}
d1.update(d2)#字典的合并
print(d1.pop('hello'))
print(d1)
pop提供根据对应key只删除value,当然你也可以打印出来,或者直接选择删除;
13随机删除
我发现py提供了很多很多的随即删除函数,我不知道这些函数为什么能够存在,因为对于我所知的c与c++来说没有提供与随机删除这个词有关的函数(也可能是我孤陋寡闻)
# coding:utf-8
d1 = {'hello': 10, 'world': 20, 'python': 30}
d2 = {'are': 50, 'you': 60}
d1.update(d2)#字典的合并
print(d1.popitem())
你甚至可以把这个值赋给另一个变量存储
14:清空字典d1.clear()
15:我们说过在py里一切皆对象,就连一个变量,一个数据类型都具有bool值,所以我们理所当然可以对一个空字典查看其bool值,当然,肯定为空;
print(bool(d1))
16字典生成式:使用random随机生成,for循环的方法
# coding:utf-8
import random
d = {item: random.randint(1, 100) for item in range(4)}
print(d)
外层是四个有序的数,从0-3共四个,然后冒号后面的是value,我们使用随机函数生成,能生成1-100以内的数字;
17:映射发,上面已经给出生成方法,这里不再赘述;
18:set的使用,我们的{}放键值对叫字典,放单个值叫集合,集合严格有序;
19:集合的操作:
# coding:utf-8
a = {1, 4, 5, 6}
b = {1, 7}
a.add(2)#集合的添加
print(a)
#a.pop()#随机删除
#print(a)
a.remove(1)
print(a)#指定删除1
a.update(b)
print(a)
print(b)
b.clear()
print(b)#set()打印出来的这东西叫空集合,空字典是{}
20:set的高级用法,set是支持运算符的,也就是说,它不仅支持*法,还支持加法减法,且或异或都支持,这里不再详细展开讲,有兴趣的可以自己打开pycharm进行验证;