Python字典

字典创建方式

字面量创建

>>> {'优':90,'良':80}
     
{'优': 90, '良': 80}

通过dict()

>>> dict1 = dict([['优',90],['良',80],['中',70]]) # 列表
     
>>> dict1
     
{'优': 90, '良': 80, '中': 70}

>>> dict2 = dict((('优',90),('良',80),('中',70))) # 元组
>>> dict2
{'优': 90, '良': 80, '中': 70}
>>> dict3 = dict(zip(['优','良','中'],[90,80,70])) #zip函数
>>> dict3
{'优': 90, '良': 80, '中': 70}

通过fromkeys()

# 以序列作为键,值是一样的
>>> dict1 = {}.fromkeys(['优','良','中'],'大于60分')
>>> dict1
{'优': '大于60分', '良': '大于60分', '中': '大于60分'}

>>> dict2 = {}.fromkeys(['优','良','中'])
>>> dict2
{'优': None, '良': None, '中': None}

推导式

>>> dict1 = {n:n**2 for n in range(1,5)}
>>> dict1
{1: 1, 2: 4, 3: 9, 4: 16}

字典的操作

>>> dict1 = dict(zip(['优','良','中'],[90,80,70]))
>>> dict1
{'优': 90, '良': 80, '中': 70}
>>> dict1.get('优')
90
>>> dict1.get('差')
>>> dict1.get('差','没有该键值')
'没有该键值'
>>> dict1.get('中','没有该键值')
70
>>> dict1['优']
90
>>> dict1.items()
dict_items([('优', 90), ('良', 80), ('中', 70)])
>>> dict1.keys()
dict_keys(['优', '良', '中'])
>>> dict1.values()
dict_values([90, 80, 70])
>>> for i in dict1:
	print(i,end = ' ')

	
优 良 中 
>>> for i in dict1.keys():
	print(i,end = ' ')

	
优 良 中 
>>> for i in dict1.items():
	print(i,end = ' ')

	
('优', 90) ('良', 80) ('中', 70) 
>>> 
>>> dict1
{'优': 90, '良': 80, '中': 70}
>>> dict2 = {'优':100}
>>> dict1.update(dict2)
>>> dict1
{'优': 100, '良': 80, '中': 70}
>>> dict3 = dict(zip(['优','良','中'],[90,80,70]))
>>> del dict3['优']
>>> dict3
{'良': 80, '中': 70}
>>> del dict3
>>> dict3
Traceback (most recent call last):
  File "<pyshell#60>", line 1, in <module>
    dict3
NameError: name 'dict3' is not defined

    
>>> dict1
{'优': 100, '良': 80, '中': 70}
>>> dict1.pop('优')
100
>>> dict1
{'良': 80, '中': 70}
>>> dict1.pop('优','没有该项')
'没有该项'
>>> dict1
{'良': 80, '中': 70}

>>> dict1.popitem()
('中', 70)
>>> 
>>> dict1.popitem()
('良', 80)
>>> 
>>> dict1
{}
>>> 
>>> dict2 = dict(zip(['优','良','中'],[90,80,70]))
>>> dict2.clear()
>>> dict2
{}

集合创建方式

字面量创建

  • 元素只能是固定类型,不能是可变类型
>>> set1 = {1,[1,2,3]}
Traceback (most recent call last):
  File "<pyshell#73>", line 1, in <module>
    set1 = {1,[1,2,3]}
TypeError: unhashable type: 'list'
>>> set1 = {1,2,'a',True}
>>> set1
{1, 2, 'a'}  # 类型转换

对象创建

  • 元素可以是列表
>>> set1 = set('hello')
>>> set1
{'h', 'e', 'o', 'l'}

>>> set2 = set([1,2,'a']) 
>>> set2
{1, 2, 'a'}

>>> set3 = set()
>>> set3
set()
>>> set4 = set(1,2)#用对象方式创建,参数最多只能是一个
Traceback (most recent call last):
  File "<pyshell#85>", line 1, in <module>
    set4 = set(1,2)
TypeError: set expected at most 1 arguments, got 2
    
    
>>> a = frozenset('hello')

>>> a
frozenset({'h', 'e', 'o', 'l'})

推导式

>>> {x*x for x in range(1,5)}
{16, 1, 4, 9}


>>> {1,1.0}  # 根据值来进行判断去重
{1}

集合的操作

  • 由于集合的无序性,集合不能进行索引和切片操作
>>> set1 = {9,10,4,6,2,3,1}
>>> for i in set1:
	print(i,end = ' ')

	
1 2 3 4 6 9 10 
>>> 1 in set1
True

>>> set1
{1, 2, 3, 4, 6, 9, 10}
>>> set2
{8, 6, 7}
>>> set1 | set2
{1, 2, 3, 4, 6, 7, 8, 9, 10}
>>> set1 & set2
{6}
>>> set1 - set2
{1, 2, 3, 4, 9, 10}
>>> set1 ^ set2
{1, 2, 3, 4, 7, 8, 9, 10}
>>> set1.union(set2)
{1, 2, 3, 4, 6, 7, 8, 9, 10}
>>> set1 == set2
False
>>> set1 > set2
False
>>> len(set1)
7
>>> max(set2)
8

# update
>>> set1
{1, 2, 3, 4, 6, 9, 10}
>>> set2
{8, 6, 7}
>>> set1.update(set2)
>>> set1
{1, 2, 3, 4, 6, 7, 8, 9, 10}

# 复制:浅复制
>>> set1
{1, 2, 3, 4, 6, 7, 8, 9, 10}
>>> set2 = set1.copy()
>>> set2
{1, 2, 3, 4, 6, 7, 8, 9, 10}

字符串

>>> str1 = 'hello'
>>> len(str1)
5
>>> str1[2:]
'llo'
>>> str2 = 'ab'
>>> str1 > str2
True
>>> 2 * str1
'hellohello'
>>> max(str1)
'o'

编码和解码

>>> str1 = '字符串str的编码和解码操作'
>>> b1 = str1.encode(encoding='cp936')
>>> b1
b'\xd7\xd6\xb7\xfb\xb4\xaestr\xb5\xc4\xb1\xe0\xc2\xeb\xba\xcd\xbd\xe2\xc2\xeb\xb2\xd9\xd7\xf7'
>>> b1.decode(encoding='cp936')
'字符串str的编码和解码操作'

字符串格式化

>>> '结果为:%f'%88
'结果为:88.000000'
>>> '结果为:%f'%88.1
'结果为:88.100000'
>>> '姓名:%s,年龄:%d,体重:%3.2f'%('鹅鹅鹅',19,58.5)
'姓名:鹅鹅鹅,年龄:19,体重:58.50'

>>> '%(lang)s has %(num)03d quote types.' %{'lang':'Python','num':2}
'Python has 002 quote types.'


>>> format(81.2,'0.5f')
'81.20000'
>>> format(81.2,'%')
'8120.000000%'
>>> '{2},{1},{0}'.format('a','b','c') # 个数要对应
'c,b,a'

>>> str.format_map('{name:s},{age:d}',{'name':'tom','age':20})
'tom,20'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值