Python中的字典

记不记得小学如何查字典呢

先查索引,然后通过索引查找相应的内容,简单、方便、快捷。

出于这种需求,Python 也提供了这样一种数据类型 - dict,翻译为中文就是“字典”。

一.字典的定义

1.空字典的建立

                                       { }

                                      dict ( )

dict_1 = {}
dict_2 = dict()
print(type(dict_1),type(dict_2))
<class 'dict'> <class 'dict'>

2.注意

 key 必须是唯一的,不可变数据类型(str、tuple)

value值可以是任意数据类型: int,float,long, complex, list, tuple,set, dict

可变数据类型:list, set,  dict
不可变数据类型: 数值类型,str, tuple

3.字典的创建

要创建字典,需要将所有项(元素)放在花括号({})内,以逗号(,)分隔。其中,每个元素都以 key:value 对的形式出现,key 和 value 可以是任何数据类型。

d1 = {}        #空字典
d2 = {1:'terStegen',2:'Semedo',3:'Pique'}       #key值为整形
d3 = {'team':'fcb',3:'Pique'}                   #key值为混合型
d4 = dict([(1,'terStegen'),(2,'Semedo'),(3,'Pique'),(4,'Rakitic'),(5,'Busquets')])   #序列转换为字典            
print(d1,d2,d3,d4)
{} {1: 'terStegen', 2: 'Semedo', 3: 'Pique'} {'team': 'fcb', 3: 'Pique'} {1: 'terStegen', 2: 'Semedo', 3: 'Pique', 4: 'Rakitic', 5: 'Busquets'}

进阶

字典的嵌套

fcb = {
'1' : {
        'name' : 'terStegen',
        'country' : 'Germany',
        'age' : 26
},
'2' : {
        'name' : 'Semedo',
        'country' : 'Portugal',
        'age' : 24
}
}
print(fcb)
{'1': {'name': 'terStegen', 'country': 'Germany', 'age': 26}, '2': {'name': 'Semedo', 'country': 'Portugal', 'age': 24}}

 

字典的访问

 

 通过工厂函数创建字典:

cardInfo = dict(user1 = '000000',user2 = '000000',user3 = '000000')
print(cardInfo)
{'user1': '000000', 'user2': '000000', 'user3': '000000'}

 

初始化所有value值: fromkeys( )

fromkeys第一个参数可以列表/tuple/str/set, 将列表的每一个元素作为字典的key值

生成100个卡号,并生成秘密:

for cardId in range(100):
    card = "110 112233 %.3d" %(cardId+1)
    cards.append(card)
print({}.fromkeys(cards,'888888'))
    
{'110 112233 001': '888888', '110 112233 002': '888888', '110 112233 003': '888888',....

 

4.字典和列表(或其它序列)之间的区别:

  • 列表是对象的有序集合,而字典是无序集。
  • 对于列表(其他复合数据类型也一样)来说,元素只有值;而对于字典,元素由 key:value 对的形式组成。
  • 字典中的元素通过 key 来访问,而非通过他们的位置来访问(主要区别)。

二.字典的特性

字典不支持序列数据类型(例如:字符串、元组和列表)的序列操作,例如:索引
切片、连接(+)、重复(*)等。

1.成员操作符:in  /  not  in

print('Pique' in FCB)
True
print('Villa' in FCB)
False
print('Villa' not in FCB)
True
print('31' not in FCB)
True

2.for循环,默认遍历字典的key值

for i in FCB:
    print(i)
    
Vidal
Pique
Perdo
Rakitic
Suarze
Semedo
Busquets

3.for(循环枚举)

FCB = dict(terStegen=1,Semedo=2,Pique=3)
for number,player in enumerate(FCB):
    print("%s:%s" %(number+1,player))
    
1:terStegen
2:Semedo
3:Pique

三.字典的增加或更改

字典是可变的,可以添加新元素,也可以使用赋值运算符(=)更改现有元素的值。

如果 key 存在,value 将被更新;否则,新的 key:value 对会被添加到字典中。

1.添加或者更改key-value对

FCB = dict(terStegen=1,Semedo=2,Pique=3)
FCB['7'] = 'Villa'
FCB
{'terStegen': 1, 'Semedo': 2, 'Pique': 3, '7': 'Villa'}
FCB['7'] = 'Coutinho'
FCB
{'terStegen': 1, 'Semedo': 2, 'Pique': 3, '7': 'Coutinho'}

2.dict.update({.....})

如果key值已经存在, 更新value值,
如果key值不存在, 添加key-value值.

FCB
{'terStegen': 1, 'Semedo': 2, 'Pique': 3, '7': 'Coutinho'}        
FCB.update({'8':'Arthur'})
FCB
{'terStegen': 1, 'Semedo': 2, 'Pique': 3, '7': 'Coutinho', '8': 'Arthur'}    ##增加key-values
FCB.update({'8':'Instead'})
FCB
{'terStegen': 1, 'Semedo': 2, 'Pique': 3, '7': 'Coutinho', '8': 'Instead'}    ##更新value值

3.dict.setdefault()

如果key值已经存在, 不做修改;
如果key值不存在, 添加key-value值;默认情况下value值为None

FCB
{'terStegen': 1, 'Semedo': 2, 'Pique': 3, '7': 'Coutinho', '8': 'Instead'}
FCB.setdefault('10','Messi')
'Messi'
FCB
{'terStegen': 1, 'Semedo': 2, 'Pique': 3, '7': 'Coutinho', '8': 'Instead', '10': 'Messi'}

四.字典的删除

1.dict . pop(key值):用 key 删除元素并返回其 value

FCB.pop('8')
'Instead'
FCB
{'terStegen': 1, 'Semedo': 2, 'Pique': 3, '7': 'Coutinho', '10': 'Messi'}

2.dict.opitem( ):删除并返回一个任意元素

FCB
{'terStegen': 1, 'Semedo': 2, 'Pique': 3, '7': 'Coutinho', '10': 'Messi'}
FCB
{'terStegen': 1, 'Semedo': 2, 'Pique': 3, '7': 'Coutinho', '10': 'Messi'}
FCB.popitem()
('10', 'Messi')
FCB.popitem()
('7', 'Coutinho')

3.del dict [ key ]:删除指定某一元素

FCB
{'terStegen': 1, 'Semedo': 2, 'Pique': 3, '8': 'Arthur', '10': 'Messi'}
del FCB['10']            #删除元素
FCB
{'terStegen': 1, 'Semedo': 2, 'Pique': 3, '8': 'Arthur'}

4.dict.clear( ):清空/删除所有项

FCB
{'terStegen': 1, 'Semedo': 2, 'Pique': 3, '8': 'Arthur'}
FCB.clear()
FCB
{}

四.字典的修改和查看

1.查看字典里面所有的key值

dict.keys( )

2.查看字典里面所有的value值

dict.values( )

3.查看字典里面所有的key-value值

dict.items( )

FCB = {'terStegen':1,'Semedo':2,'Pique':3,'Rakitic':4}
print(FCB.keys())                            ##查看字典里面所有的key值
dict_keys(['terStegen', 'Semedo', 'Pique', 'Rakitic'])
print(FCB.values())                          ##查看字典里面所有的values值
dict_values([1, 2, 3, 4])                    
print(FCB.items())                            ##查看字典里面所有的key-value值
dict_items([('terStegen', 1), ('Semedo', 2), ('Pique', 3), ('Rakitic', 4)])

4.遍历

for k,v in FCB.items():
    print(k,'----->',v)
    
terStegen -----> 1
Semedo -----> 2
Pique -----> 3
Rakitic -----> 4

5.查看指定key对应的value值

1)dict[key值]

FCB = {'terStegen':1,'Semedo':2,'Pique':3,'Rakitic':4}
print(FCB['Semedo'])
2

注意: key不存在, 就会报错

2)dict.get(key)

print(FCB.get('Semedo'))
2

五.通过字典间接实现switch语句

scores = {
'A':'优秀',
'B':'合格',
'C':'合格',
'D':'不及格'
}
garde = input("请输入等级:")
if garde in scores:
    print (scores.get(garde))
else:
    print ('error')

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值