创建字典操作很简单,只需要记住使用大括号即可(python中的三种常用数据类型:列表 - [],元组 - (),字典 - {})
#创建一个空字典
dic = {}
# 创建一个有初始值的字典
dic1 = {'Tom':15,'Jhon':13,'Marry':12}
当然,字典的键,值均可以是int类型。
对于以上的dic1,如果还想增加一个15岁的Bob,那么只需要:
dic1['Bob'] = 15
当然,和python的list一样,你无需保证字典里的每个元素有相同的数据类型,也就是说,你也可以在dic1中添加这样一个键-值对:
dic1[1] = 12
clear()方法可以用来清除字典中的所有数据,因为对字典造成了毁灭性的操作,所以也没必要有返回值。
dic1 = {'Tom':15,'Jhon':13,'Marry':12}
dic1.clear()#执行操作后dic1变为{}
这里需要注意:当原字典被引用时,想清空原字典中的元素,用clear()方法,原字典中的元素也同时被清除了,即:
dic1 = {'Tom':15,'Jhon':13,'Marry':12}
dic2 = dic1
dic2.clear() ## 同时dic1也变为{}
pop()方法的作用是:删除指定给定键所对应的值,返回这个值并从字典中把它移除。注意字典pop()方法与列表pop()方法作用完全不同。
dic1 = {'Tom':15,'Jhon':13,'Marry':12}
t = dic1.pop('Tom')
print(t)##t = 15
print(dic1)##dic1 = {'Jhon':13,'Marry':12}
字典popitem()方法作用是:随机返回并删除字典中的一对键和值(项)。因为字典是无序的,所以没有所谓的“最后一项”。
这是字典的本职工作。主要有两种情况:
print(dic1['Tom'])
dic.__contains__(键)
,有这个键返回True
,没有返回False
通过值查找键比较复杂,但是有时候也有这样的需求。虽然实现起来相对复杂一点,但依旧可以达到这样的目的,一般来说可通过如下3种方式实现:
1) 充分利用 keys()【获取字典里的所有键】 、values()【获取字典里的索引值】、index(值)【返回满足条件的 list 索引】 函数。代码如下:
list (dic1.keys()) [list (dic1.values()).index (13)]#返回Jhon
2)通过定义get_key函数的方式。
def get_key (dict, value):
return [k for k, v in dict.items() if v == value]
t = get_key (dic1, 'Tom') # 返回t=15
3)将原字典dict进行反转得新字典new_dict,由原来的K-V存储形式,变为V-K存储形式
new_dict = {v : k for k, v in dict.items()}
new_dict [15]#返回Tom
使用这种方法有一个前提条件:在原字典中,Value值必须是唯一且不重复的。以下两种情况会导致这种方法失败。
dic2 = {'Tom':15,'Jhon':13,'Marry':12,'Bob':12}#值有重复元素,这样转化成键的时候会随机删掉一个
dic3 = {'Tom':15,'Jhon':13,'Marry':[12,13]}#值不唯一,转化成键时违背字典键唯一的原则。
dic_list = list(dic.items())
如果需要把键值对依次输出,可以使用for循环:
for item in dic_list:
print(item)#依次输出键值对
#方法一
for key in a:
print(key+':'+a[key])
#方法二
for key in a.keys():
print(key+':'+a[key])
输出:
a:1
b:2
c:3
在使用上,for key in a
和 for key in a.keys()
完全等价。
for value in a.values():
print(value)
输出:
1
2
3
for k,v in a.items():
print(k,v)
输出:
('a', '1')
('b', '2')
('c', '3')
注:
1)这里不能使用:for k,v in a:
。会报错
2)和列表不同,字典的输出顺序每次是不一样的。