Python学习笔记8

映射

brand = ['李宁', 'NIKE', 'Adidas']
slogan = ['一切皆有可能', 'Just do it', 'Impossible is nothing']
print('Nike的口号是:', slogan[brand.index('NIKE')])
#间接的通过品牌查找口号 ,这种映射方式在c/c++中使用起来会比较高级,
#但在python中用起来稍有别扭,效率也不怎么高,又要调用方法又要进行查找,
#况且python是以简洁为主,所以就有了字典类型的这种映射方式

字典

字典用{}号来表示,元组是(),列表是[],但是元组和列表都是序列类型,而字典并不是序列类型,是映射类型。
brand = ['李宁', 'NIKE', 'Adidas']
slogan = ['一切皆有可能', 'Just do it', 'Impossible is nothing']
print('Nike的口号是:', slogan[brand.index('NIKE')])
#间接的通过品牌查找口号 ,这种映射方式在c/c++中使用起来会比较高级,
#但在python中用起来稍有别扭,效率也不怎么高,又要调用方法又要进行查找,
#况且python是以简洁为主,所以就有了字典类型的这种映射方式

dict1 = {'李宁': '一切皆有可能', 'YSL': '编程使我快乐'}
#列表有两个关键字一个是 key(键) 一个是 value(值) ,冒号左边是key右边就是value。
#键值组合称为项。# 那么在这上边 李宁就是key ,一切皆有可能就是value。
print('李宁的口号是:', dict1['李宁'])
#这里索引的方式和元组,列表,字符串都相似,都是中括号。
#但不同的是,这里的中括号里边并不是索引值,还是加上ta的键的值也就是key。

dict2 = {1: 'one', 2: 'two'}
print(dict2[2]) #输出two

#dict()函数
dict3 = dict((('F', 70), ('i', 105), ('s', 115)))
#dict()里边传进去的是一个映射关系可元组,可列表。同时dict()只有一个参数
print(dict3)#{'F': 70, 'i': 105, 's': 115}

dict4 = dict(YSL='硕士', 马云='我对钱没有兴趣')
#也通过关键字的方式创建字典,等号左边是key右边是value。
#如果通过这种方式创建,那么在字典里面的排序也会进行一个变化。
#但需要注意的是此时左边的key并不能这样写'YSL',如果这样写就会报错
#因为左边直接给一个名字的话,会自动以字符串形式把ta包括起来
#也就是ta不能是一个表达式
print(dict4)#{'YSL': '硕士', '马云': '我对钱没有兴趣'}
dict4['马化腾'] = '让充钱改变世界'
#如果键本身存在,则改写对应的键的值。如果不存在,并不会报错,而是直接创建新的键并为ta赋值
print(dict4)#{'YSL': '硕士', '马云': '我对钱没有兴趣', '马化腾': '让充钱改变世界'}

fromkeys

fromkeys方法 可以创建返回一个新的字典 注意是新的字典
有两个参数第一个是字典的键值,第二个是键值对应的值默认为None
None表示一个对象,一个什么都没有的对象,可以理解为空
dict1 = {}
dict2 = dict1.fromkeys((1, 2, 3))
print(dict1)#{}
print(dict2)#{1: None, 2: None, 3: None}
dict2 = dict1.fromkeys((1, 2, 3), ('one', 'two', 'three'))
#第二个参数,只能是一个参数,设置为每一个的值
print(dict2)#{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}

keys() 获取字典中所有的键并放入列表

dict1 = {}
dict1 = dict1.fromkeys(range(10), '牛')
print(dict1)#{0: '牛', 1: '牛', 2: '牛', 3: '牛', 4: '牛', 5: '牛', 6: '牛', 7: '牛', 8: '牛', 9: '牛'}
for eachkey in dict1.keys():
    print(eachkey)
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9

values()获取字典中所有的值并放入列表

items()获取字典中所有的键值对并放入列表

get()根据键获取字典中的值,如果键不存在则返回一个默认值,默认值不填写则返回None

继上面的例子 print(dict1.get(10)) #输出None
		   print(dict1.get(9)) #输出牛	

如果不知道一个键是否在字典中,可以用成员资格操作符进行判断

依然借助上面的例子
print(9 in dict1) #返回True
print(10 in dict1) #返回False

clear()清空字典

copy()浅拷贝

copy()等于又复制了一份字典出来,等于现在在内存中有两份字典。	

id()函数可以查询在内存中的地址

pop()与popitem()

pop()方法删除字典给定键 key 所对应的值,返回值为被删除的值,
如果要删除的 key 不存在,则需要添加默认值,否则会报错。

popitem() 方法随机返回并删除字典中的一对键和值。
如果字典已经为空,却调用了此方法,就报出KeyError异常。
a = {1: 'one', 2: 'two', 3: 'three'}
a.pop(2)
print(a)#{1: 'one', 3: 'three'}

a = {1: 'one', 2: 'two', 3: 'three'}
a.popitem()
print(a)#结果是随机弹出的

setdefault()

与get()类似,但是setdefault()在字典中找不到对应的键的时候,会自动进行添加。
a = {1: 'one', 2: 'two', 3: 'three'}
a.setdefault('小白')
print(a) #{1: 'one', 2: 'two', 3: 'three', '小白': None}
a.setdefault(4, 'four')
print(a) #{1: 'one', 2: 'two', 3: 'three', '小白': None, 4: 'four'}

update()利用一个字典或映射关系去更新另外一个字典

a = {1: 'one', 2: 'two', 3: 'three'}
b = {'小白': '猫'}
a.update(b) #用b去更新a
print(a) #{1: 'one', 2: 'two', 3: 'three', '小白': '猫'}
注意:字典 update() 方法用于更新字典中的键值对
可以修改存在的键值对应的值,也可以添加新的键值对到字典中
d = {'one': 1, 'two': 2}
# 传入一个字典
d.update({'one': 3, 'two': 4})
print(d) #{'one': 3, 'two': 4}

集合:在我的世界里,你就是唯一!

num = {}
print(type(num)) #<class 'dict'>

num = {1, 2, 3}
print(type(num)) #<class 'set'>

num2 = {1, 2, 3, 3, 2, 1, 4}
print(num2) #{1, 2, 3, 4}会发现重复的元素只保留下来了一个
#这就说明了集合的唯一性,同时集合不支持索引

'''如何创建集合?
    1.直接把一堆元素用花括号括起来
    2.用set()工厂函数
    '''
set1 = set([1, 2, 3, 3, 4, 4, 5])
print(set1) #{1, 2, 3, 4, 5}

'''去掉列表重复的元素1'''
num = [1, 2, 3, 4, 5, 5, 0, 0, 1]
temp = []
for each in num:
    if each not in temp:
        temp.append(each)

print(temp) #[1, 2, 3, 4, 5, 0]

'''去掉列表重复的元素2'''
num = list(set(num))
print(num) #[0, 1, 2, 3, 4, 5]

'''如何访问集合中的值
    1.可以使用for把集合中的数据一个个读取出来
    2.可以通过in和not in判断一个元素是否在集合中已经存在
    '''
print(1 in num) #True
print('1' in num) #False

add()和remove()

#可以通过add()在集合中添加一个元素
#同理remove()就是在集合中删除一个元素

num = {1, 2, 3, 4, 5}
num.add(6)
print(num) #{1, 2, 3, 4, 5, 6}
num.remove(5)
print(num) #{1, 2, 3, 4, 6}

不可变集合

num = frozenset([1, 2, 3, 4, 5, 6, 7]) #不可修改
num.add(0) #会报错
num.remove(7) #会报错
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值