Python-字典常用操作

一、创建字典

创建字典操作很简单,只需要记住使用大括号即可(python中的三种常用数据类型:列表 - [],元组 - (),字典 - {})

#创建一个空字典
dic = {}
# 创建一个有初始值的字典
dic1 = {'Tom':15,'Jhon':13,'Marry':12}

当然,字典的键,值均可以是int类型。

二、增加键-值

对于以上的dic1,如果还想增加一个15岁的Bob,那么只需要:

dic1['Bob'] = 15

当然,和python的list一样,你无需保证字典里的每个元素有相同的数据类型,也就是说,你也可以在dic1中添加这样一个键-值对:

dic1[1] = 12

三、删除键-值

1、核武器级别的clear()方法

clear()方法可以用来清除字典中的所有数据,因为对字典造成了毁灭性的操作,所以也没必要有返回值。

dic1 = {'Tom':15,'Jhon':13,'Marry':12}
dic1.clear()#执行操作后dic1变为{}

2、指哪打哪的pop()方法

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}

3、一个一个来的popitem()方法

字典popitem()方法作用是:随机返回并删除字典中的一对键和值(项)。因为字典是无序的,所以没有所谓的“最后一项”

#!/usr/bin/python
# -*- coding: UTF-8 -*-
site= {'name': '我的博客地址', 'alexa': 10000, 'url':'http://blog.csdn.net/uuihoo/'}
pop_obj=site.popitem() # 随机返回并删除一个键值对
print pop_obj   # 输出结果可能是{'url','http://blog.csdn.net/uuihoo/'}

4、 del 全局方法(能删单一的元素也能清空字典,清空只需一项操作)

#!/usr/bin/python
# -*- coding: UTF-8 -*-
site= {'name': '我的博客地址', 'alexa': 10000, 'url':'http://blog.csdn.net/uuihoo/'}
del site['name'] # 删除键是'name'的条目 
del site  # 清空字典所有条目

四、查找

1、通过键查找值

这是字典的本职工作。主要有两种情况: 
1. 通过键找到对应的值:print(dic1['Tom']) 
2. 判断有无对应的键:使用函数 dic.__contains__(键) ,有这个键返回True,没有返回False

2、通过值查找键

通过值查找键比较复杂,但是有时候也有这样的需求。虽然实现起来相对复杂一点,但依旧可以达到这样的目的,一般来说可通过如下3种方式实现: 
1) 充分利用 keys()【获取字典里的所有键】 、values()【获取字典里的索引值】、index(值)【返回满足条件的 list 索引】 函数。代码如下:

   index()方法语法:

   str.index(str, beg=0, end=len(string))

  参数

  • str -- 指定检索的字符串
  • beg -- 开始索引,默认为0。
  • end -- 结束索引,默认为字符串的长度。
 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, 15) # 返回t=['Tom']

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]}#值不唯一,转化成键时违背字典键唯一的原则。

3、把字典key-值转化为list

dic_list = list(dic.items())
print(dict_list)
#[('Tom', 15), ('Jhon', 13), ('Marry', 12)]

如果需要把键值对依次输出,可以使用for循环:

for item in dic_list:
    print(item)#依次输出键值对
#('Tom', 15)
#('Jhon', 13)
#('Marry', 12)

五、排序

1、sorted函数按val和key值对字典排序

d = {'a':1,'b':4,'c':2}
val=sorted(d.items(),key = lambda x:x[1],reverse = True)
key=sorted(d.items(),key = lambda x:x[0],reverse = True)
print(val)
print(key)
#[('b', 4), ('c', 2), ('a', 1)]
#[('c', 2), ('b', 4), ('a', 1)]

2、方法二

d = {'a':1,'b':4,'c':2}
print([(key,d[key])for key in sorted(d.keys())])
#[('a', 1), ('b', 4), ('c', 2)]

猜你喜欢

转载自blog.csdn.net/qq_41994006/article/details/82527000