Python内置了字典:dict的支持,dict全称dictionary;

表达式为dict{key,value} 使用键值对来存储数据

eg: 使用dict来存储姓名和分数

d = {'bob':20,'lisa':80,'tom':90}
>>>d
{'bob':20,'lisa':80,'tom':90}

dict的查找速度比list快,dict叫做字典,从名称上就能看出来,就行我们查字典,以关键词查找;

而list的每个元素都要遍历一遍才能查找到自己想要的数据

如何访问key得到value?

查找的key不存在的时候,会报错keyerror

>>>d['bob']
20
>>>d['mm']
....
.....
keyerror

要避免keyerror,可以先判断key是否存在,还有dict提供的get()方法

>>>'bob' in d
Ture
>>>'jeny' in d
False
#dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:
>>>d.get('bob')
20
>>>d.get('lili') #不存在,返回None
#返回自己指定的错误返回值
>>>d.get('lili',5)
5

如何在dict中插入键值对?

d = {'bob':20,'lisa':80,'tom':90}
#通过key插入
d['jerry'] = 65
>>>d
{'bob':20,'lisa':80,'tom':90,'jerry':65}

当插入的键重复后,前者的value会被覆盖,python是动态语言,变量也是如此,后者覆盖前者。

要删除一个key,用pop(key)方法,对应的value也会从dict中删除:

d = {'bob':20,'lisa':80,'tom':90}
>>>d.pop('bob')
20
>>>d
['lisa':80,'tom':90]

使用for循环遍历dict。

items()方法,以列表返回可遍历的(键, 值) 元组数组。

d = {'score':80,'name':'jess','class':2}
#只拿出key
for k in d:
print(k)
score
name
class #只拿出value,使用方法d.values()
for y in d.values():
  print(y)
80
jess
2 #同时拿出key和value
for k,v in d.items():
  print(k,v)
score 80
name jess
class 2

set

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key.

写法为:set = ([x,y,z])   内含一个list作为输入集,写法看起来就像tuple内包含了一个list

如果set()内包含了重复的元素,set会自动剔除掉

s = ([1, 2, 3,3])
>>>s
[1,2,3]

add()方法添加元素到set内,remove()方法进行删除。

add()(待定,使用add方法添加时报错,list不存在add()方法,IDE会提示append()方法,可以正常添加)

insert()方法同list操作,正常。

s = ([1,2,3])
#>>>s.add(4)
#>>>s
#[1,2,3,4]
>>>s.remove(2)
>>>s
[1,3,4]

set的其他方法如下:

clear()清空set所有元素

name = set(['Tom','Lucy','Ben'])
name.clear()
print(name) #输出:set()

copy()复制set到另一个set

name = set(['Tom','Lucy','Ben'])
new_name = name.copy()
print(new_name) #输出:{'Tom', 'Lucy', 'Ben'}

difference()比较两个或者多个set,剔除重复元素,只要两者之间有重复,就删除。

n1 = set([2,3,4,5])
n2 = set([3,4])
n3 = set([2])
n = n1.difference(n2,n3)
print(n) #输出:{5}
#返回A集合里面,在B和C集合中没有的元素,并生成新的集合

difference_update(删除A集合里面,在B集合中存在的元素。)

A = set([2,3,4,5])
B = set([4,5])
A.difference_update(B)
print(A) #输出:{2, 3}

##########discard(移除元素) shell里面也没有提示这个,所以暂时不要使用,   用remove()就行

n = set([2,3,4])
n.discard(3)
print(n) #输出:{2, 4}

pop()随机删除一个元素。

s = ([1,2,3,4,5])
>>>s.pop()
5

sort()正序排序

s = ([2,9,8,6])
>>>s.sort()
[2,6,8,9]

reverse()倒序排序

s = ([1,2,3,4,5])
>>>s.reverse()
[5,4,3,2,1]

目前shell就提示这么多,改动的话再编辑。

Python的字典dict和set的更多相关文章

  1. python基础——字典dict

    1.概念: (1)字典dict,是一系列的键—值对.每个键key都和一个值value相映射.(字典是python中唯一的映射类型.) (2)每一项item,是一个键值对key—value对. (3)键 ...

  2. python基础——字典(dict)

    字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 . dict1 = {} ...

  3. python中字典dict的操作

    字典可存储任意类型的对象,由键和值(key - value)组成.字典也叫关联数组或哈希表. dict = {' , 'C' : [1 , 2 , 3] } dict['A'] = 007 # 修改字 ...

  4. Python中字典dict

    dict字典 字典是一种组合数据,没有顺序的组合数据,数据以键值对形式出现 # 字典的创建 # 创建空字典1 d = {} print(d) # 创建空字典2 d = dict() print(d) ...

  5. python基础-字典dict

    字典-dict 用途: 定义方法:通过{} 来存储数据,通过key:value (键值对)来存储数据,每个键值对通过逗号分隔.在键值对中,key 是不可变的数据类型,value 是任意数据类型 def ...

  6. python数据类型:字典dict常用操作

    字典是Python语言中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的: Key: 不可变(可哈希)的数据类型.并且键是唯一的,不重复的. Value:任意数据(int,str,boo ...

  7. Python基础:字典(dict)与集合(set)

    查找场景下与列表的性能对比 字典与集合之所以高效的原因是:内部结构都是一张哈希表. 平均情况下插入.查找和删除的时间复杂度为 O(1). 假设有数量100,000的产品列表: import time ...

  8. Python操作字典(dict)

    一.字典定义 >>> dict={} 二.字典元素添加 >>> dict['性别']='男' >>> dict {'性别': '男'} >& ...

  9. python之字典(dict)

    字典:一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 字典由键和对应值成对组成 {key:value,key1,value1}, 例如: dic = {'中国': '汉语 ...

随机推荐

  1. java虚拟机知识和 内存 堆(heap)、栈(stack)和方法区(method)

    1.虚拟机实例 每个java程序都运行在自己的java虚拟机实例中,运行三个java程序就会得到三个虚拟机实例 守护线程(虚拟机自己使用,比如说执行垃圾收集任务的线程) 非守护线程(java初试线程, ...

  2. 键盘控制div移动并且解决停顿问题(原生js)

    <html> <head> <title>键盘控制div移动,解决停顿问题</title> <meta charset="utf-8&q ...

  3. 获得WebBrowser中的图片数据

    /// <summary> /// 获取WebBrowser指定的图片 /// </summary> /// <param name="webBrowser&q ...

  4. python类与类的关系

    类与类之间的关系(依赖关系,大象与冰箱是依赖关系) class DaXiang: def open(self, bx): # 这里是依赖关系. 想执行这个动作. 必须传递一个bx print(&quo ...

  5. Codeforces 813E - Army Creation

    813E - Army Creation 思路: 线段树+二分 先预处理每个点往后走k步的下标 线段树二叉树的每个节点用vector维护这些下标,给这些下标排个序 询问区间L,R,那么把下标小于等于R ...

  6. Codeforces 932D - Tree

    932D - Tree 思路: 树上倍增 anc[i][u]:u的2^i祖先 mx[i][u]:u到它的2^i祖先之间的最大值,不包括u pre[i][u]:以u开始的递增序列的2^i祖先 sum[i ...

  7. Python 闭包(Closure)

    Python  闭包 (Closure) 这里介绍一下python 的闭包 基本概念 闭包(closure)是函数式编程的重要的语法结构. 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函 ...

  8. 关于怎么在CSDN中修改代码行中字体的颜色

    先吐槽一下自己的心路历程吧,自己现在也是在CSDN中发表了自己好几篇的原创博文,但每一篇博文自己总感觉怪怪的,就是说不出自己哪里有毛病呢,知道今天恍然大悟,原来自己的代码行真心丑的要死,没有呈现出在编 ...

  9. hibernate例子

    首先下载好hibernate包 如果运行之后出现数据库连接错误  则重新把jar包位置放在web-inf的lib下面再addbulidpath 第一步:创建实体类 Hibernate要求实体类必须提供 ...

  10. Spring Boot入门第四天:使用Thymeleaf模板引擎

    原文链接 关于Thymeleaf的优点,我只说一条:它就是html页面啊,直接可以用浏览器打开.受够了JSP的同学可以尝试一下. 1.在pom.xml文件中添加依赖: <!--<depen ...