Python自学——字典详解(基础)

字典

  • 无序的可变序列
  • 任意对象的无序集合
  • 可变,可以任意嵌套
  • 字典中的键必须唯一(出现两次后一个值会被记住)
  • 字典中的键是不可变的(可以使用数字、字符串、元组但是不能使用列表)

字典的创建:

以键值对的形式存在,所以包含“键”和“值”。

键值之间用冒号分隔,元素之间用“,”分割。所有元素放在“{}”中。

dictionary={12:12345,(12,"123"):6789,"good":"Bob"}

创建空字典:dictionary={}或者dictionary=dict()

dict()除了可以创建一个空字典以外,还能快速的创建字典:

list1=[1,2,3,4,5,6,7,8,9]
list2=[9,8,7,6,5,4,3,2,1]
dictionary=dict(zip(list1,list2))
print(dictionary)
#zip()函数将前面的两个列表转换为字典的键和值,元组同样可以。如果list1和Liste2长度不同则以短的为主。

也可以这样:

dictionary=dict(good='43',bad='234',ok='546')#注意键也可以是数字但是我没有成功

也可以通过dict创建值为空的字典:

test_list=['good','bad','study']
dictionary=dict.fromkeys(list1)
print(dictionary)

输出:{'good':None,'bad':None,'study':None}

一个列表一个元组:

list1=(1,2,3,4,5,6,7)
list2=["good","bad","test","python","java","android","C"]
dictionary={list1:list2}
print(dictionary)

输出:{(1, 2, 3, 4, 5, 6, 7): ['good', 'bad', 'test', 'python', 'java', 'android', 'C']}

list1=[1,2,3,4,5,6,7]
list2=["good","bad","test","python","java","android","C"]
dictionary={list1:list2}
print(dictionary)

会报错,不可以将list1和list2都设为列表。但是如果同为元组则可以。

字典的删除:

字典的删除和列表和元组不同,删除最基础的就是del,直接del即删除整个字典,也可以定点删除。clear()方法意为清除字典内部的元素。pop()字典的对象方法可以定点的删除指定的元素同时返回对应的“键”的值。popitem()也是字典对象的方法,在字典中选取最后的元素删除(个人觉得因为字典是无序的,虽然删除的是你定义字典的时候的顺序来说最后,但是字典本身就是无序的,所以也算是随机删除的)时返回相应的键值对。示例如下:

dictionary={'first':1,'second':2,'third':3,'fourth':4,'fifth':5,'sixth':6}
del dictionary['fourth']
print(dictionary)
#输出:
#{'first': 1, 'second': 2, 'third': 3, 'fifth': 5, 'sixth': 6}
list1=(1,2,3,4,5,6,7)
list2=(7,6,5,4,3,2,1)
dictionary=dict(zip(list1,list2))
print(dictionary)                  #输出{1: 7, 2: 6, 3: 5, 4: 4, 5: 3, 6: 2, 7: 1}
print(dictionary.popitem())        #输出(7, 1)
print(dictionary)                  #输出{1: 7, 2: 6, 3: 5, 4: 4, 5: 3, 6: 2}
print(dictionary.pop(2))           #输出6
print(dictionary)                  #输出{1: 7, 3: 5, 4: 4, 5: 3, 6: 2}
dictionary.clear()                 
print(dictionary)                  ##输出{}

字典的输出和访问:

前面一直用print进行输出,但是字典一般用少这么用。一般是根据指定的键找对应的值。

在列表和元组中可以通过下标对元素进行索引,但是字典是无序的无法通过下标进行索引,所以只能通过键来索引出值,如下:

dictionary={'first':1,'second':2,'third':3,'fourth':4,'fifth':5,'sixth':6}
print(dictionary['first'])
#输出 1

但是很多的情况下我们是不知道或者是不确定一个“键”是否存在,如果对不存在于字典中的键键值对进行索引的话就会报错,所以可以加上一个if判断一下。

print("结果是:",dictionary['seventh'] if 'seventh' in dictionary else "无该键值对")

输出:结果是: 无该键值对

Python推荐使用字典对象的get()方法:

print(dictionary.get('fourth',"无该键值对"))
print(dictionary.get('seventh',"无该键值对"))
#输出:4
#     无该键值对

其中get()方法后面如果不设定无键时返回的值,则会返回一个“None"

字典的遍历:

这其中有一个items()方法:

dictionary={'first':1,'second':2,'third':3,'fourth':4,'fifth':5,'sixth':6}
print(dictionary.items())
#输出:dict_items([('first', 1), ('second', 2), ('third', 3), ('fourth', 4), ('fifth', 5), ('sixth', 6)])

也可以这样:

for item in dictionary.items():
 print(item)
#输出:   ('first', 1)
#        ('second', 2)
#        ('third', 3)
#        ('fourth', 4)
#        ('fifth', 5)
#        ('sixth', 6)

或者这样直接提取出键、值:

for key,value in dictionary.items():
 print(key,"键对应的值是:",value)
#输出:
#first 键对应的值是: 1
#second 键对应的值是: 2
#third 键对应的值是: 3
#fourth 键对应的值是: 4
#fifth 键对应的值是: 5
#sixth 键对应的值是: 6

其中Python也提供了key(),和value()方法:

print(dictionary.keys())
print(dictionary.values())
#输出:
#dict_keys(['first', 'second', 'third', 'fourth', 'fifth', 'sixth'])
#dict_values([1, 2, 3, 4, 5, 6])

添加、修改字典元素:

向字典里面添加元素:

dictionary={'first':1,'second':2,'third':3,'fourth':4,'fifth':5,'sixth':6}
print(dictionary)
dictionary['add_key']="add_value"
print(dictionary)
#输出:
#{'first': 1, 'second': 2, 'third': 3, 'fourth': 4, 'fifth': 5, 'sixth': 6}
#{'first': 1, 'second': 2, 'third': 3, 'fourth': 4, 'fifth': 5, 'sixth': 6, 'add_key': #'add_value'}

对于修改可以看作是添加相同键的元素,基于字典的特殊性(字典里面不允许出现相同的键),字典添加的键。如果字典原本有相同的键则会覆盖原先的值。

dictionary={'first':1,'second':2,'third':3,'fourth':4,'fifth':5,'sixth':6}
print(dictionary)
dictionary['fourth']=100
print(dictionary)
#输出:
#{'first': 1, 'second': 2, 'third': 3, 'fourth': 4, 'fifth': 5, 'sixth': 6}
#{'first': 1, 'second': 2, 'third': 3, 'fourth': 100, 'fifth': 5, 'sixth': 6}

字典推导式:

可以快速的创建字典:

randomdict = {i: random.randint(10, 100) for i in range(1, 5)}
print("生成的字典:", randomdict)
#输出:生成的字典: {1: 85, 2: 25, 3: 79, 4: 37}

业余开发者,大神勿喷欢迎交流。微信:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值