字典

key:value  键:值  映射,哈希值,关系(数组)

x=['1','2']

y=['a','b']

>>print(y[x.index('1')])

a

index() 函数用于从列表中找出某个值第一个匹配项的索引位置。

x.index('1')   0  

y[0]     a

>>x={'1':'a','2':'b'}

>>print(x['1'])

a

>>dict1={1:'one',2:'two'}

>>dict1[2]      []中是key,而不是索引值

创建 {"one":1,"two":2,"three":3}

>>> a = dict(one=1, two=2, three=3)

>>> b = {'one': 1, 'two': 2, 'three': 3}

>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))

>>> d = dict([('two', 2), ('one', 1), ('three', 3)])   # ((()))

>>> e = dict({'three': 3, 'one': 1, 'two': 2})

>>> a == b == c == d == e

True

>>dict()    创建新字典

{}

>>dict(one=1, two=2, three=3)

{"one":1,"two":2,"three":3}

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

我们可以使用 list() 转换来输出列表

>>>a = [1,2,3]

>>> b = [4,5,6]

>>> zipped = zip(a,b)

>>> zipped

<zip object at 0x103abc288>

>>> list(zipped)

[(1, 4), (2, 5), (3, 6)]

>>dict1={1:'one',2:'two'}

>>> a = dict(one=1, two=2)  #后面数字
>>> a
{'one': 1, 'two': 2}
>>> a= dict(1=one, 2=two)
SyntaxError: keyword can't be an expression

>>> a= dict(o='one', t='two')  #后面字符串,要加' '
>>> a
{'o': 'one', 't': 'two'}

dict()   字符串=字符串或数字,不可以数字=

工厂函数(类型)  int() str() dict() list()

Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。

dict.fromkeys(seq[, value])

seq -- 字典键值列表。

value -- 可选参数, 设置键序列(seq)的值。

seq = ('Google', 'Runoob', 'Taobao')   #元组,列表,都可换成字典。若后无参数,默认None

dict = dict.fromkeys(seq) print "新字典为 : %s" % str(dict)

dict = dict.fromkeys(seq, 10) print "新字典为 : %s" % str(dict)

新字典为 : {'Google': None, 'Taobao': None, 'Runoob': None}

新字典为 : {'Google': 10, 'Taobao': 10, 'Runoob': 10}

>>dict.fromkeys((1,3),'hi')

{1:'hi',3:'hi'}

>>dict1=dict.fromkeys(range(3),'hi')

{0:'hi',1:'hi',2:'hi'}

>>for a in  dict1.keys():

  print(a)

0

1

2

>>for a in dict1.values():

  print(a)

hi

hi

hi

>>for a in dict1.items():

  print(a)

(0,'hi')

(1,'hi')

(2,'hi')

>>print(dict1[2])    key

hi

>>dict1.get(2)

hi

>>3 in dict1

false

>>dict1.get(3,'no')    #修改

no

clear() 函数用于删除字典内所有元素。

dict1.clear()

dict1={}    也可用于清空字典内元素

缺点

a={1,2}

b=a    a,b指向这个字典

a={}    a清空

b={1,2}    b不变

a.clear()    a,b都为空

a={1:'hi',2'hi',3'hi'}

c=a    赋值

b=a.copy    浅拷贝    

id(a) == id(c)    a变时c也变

id(a) != id (b)    a 变时b不变

a.pop(2)   key

{1:'hi',3'hi'}

a.popitem()    随机弹出一个

(1,'hi')  

Python 字典 setdefault() 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

dict.setdefault(key, default=None)

key -- 查找的键值。

default -- 键不存在时,设置的默认键值。

a={1:'hi',2'hi',3'hi'}

print(a.setdefault(1))

hi

a.setdefault(4,'hi')

{1:'hi',2'hi',3'hi',4'hi'}

update() 函数把字典dict2的键/值对更新到dict里。

b={4,'hello'}

a.update(b)

{1:'hi',2'hi',3'hi',4'hello'}

集合  无序(非序列)无索引

>>type(num1={})

divt

>>type(num2={1,2,3})

set

>>num2={1,1,2,3,3}

>>num2

{1,2,3}

set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

set1=set([1,2,2,3])

{1,2,3}

>>>x = set('runoob')

>>> y = set('google')

>>> x, y

(set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l']))

{'r', 'b', 'o', 'u', 'n'},{'g', 'e', 'l', 'o'}

>>> x & y # 交集

set(['o'])

{'o'}

>>> x | y # 并集

set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])

{'g', 'l', 'r', 'e', 'b', 'o', 'u', 'n'}

>>> x - y # 差集

set(['r', 'b', 'u', 'n'])

{'b', 'u', 'r', 'n'}

去掉重复数

num1=[1,2,2,3]

remp=[]

for a in num1:

  if a not remp:

    temp.append(a)

创建一个空列表,若空列表中没有的数,放到空列表中(避免重复)(顺序不变)

num1=list(set(num1))  变集合,去掉重复,再变回列表(从小至大排序)

num1={1,2,3}

>> 1 in num1    判断集合内是否有元素

true

>>num1.add(4)  添加元素4

{1,2,3,4}

>>num1.remove(1)  删除元素1

{2,3,4}

不可变集合

frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

>>>a = frozenset(range(10))    frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> a

frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})

>>> b = frozenset('runoob')    frozenset(['b', 'r', 'u', 'o', 'n'])

>>> b

frozenset({'r', 'b', 'o', 'u', 'n'})    # 创建不可变集合

python 07 字典 集合的更多相关文章

  1. python :列表 字典 集合 类 ----局部变量可以改全局变量

    #列表 字典 集合 类 ----局部变量可以改全局变量,除了整数和字符串 names=["alex","jack","luck"] def ...

  2. python元组-字典-集合及其内置方法(下)

    列表补充 补充方法 清空列表 clear # clear 清空列表 l = [1, 2, 3, 4, 4] print(l.clear()) # clear没有返回值(None) print(l) # ...

  3. python --- 05 字典 集合

    一.字典 可变数据类型 {key:value}形式   查找效率高   key值必须是不可变的数据类型 1.增删改查 1).增    dic["新key"] = "新va ...

  4. Python中字典和集合

    Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...

  5. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

  6. python --->字典 集合 学习笔记

    1.字典--->创建空字典:dict={} broa=["李宁",”耐克“,“阿迪达斯”,“鱼c工作室”] sloga=[“A”,“B”,“C”,“D”] dict={&qu ...

  7. 巨蟒python全栈开发-第5天 字典&集合

    今日大纲: 1.什么是字典 字典是以key:value的形式来保存数据,用{}表示. 存储的是key:value 2.字典的增删改查(重点) (1) 添加 dic[新key] = 值 setdefau ...

  8. **python中列表 元组 字典 集合

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...

  9. Python列表、集合与字典(3)

    目录 一.列表 二.集合 三.字典 一.列表 1. 列表初识   列表的使用为处理特定顺序排列的数据提供了便利,列表元素可以是字母.数字或者其他信息,同时所加元素之间不存在任何关系.   在Pytho ...

随机推荐

  1. Mybatis——Mapper代理

    mapper的代理对象生成位于org.apache.ibatis.binding.MapperProxyFactory的newInstance方法,使用jdk的动态代理,代理的InvocationHa ...

  2. APP自动化 -- 滑动解锁、滑动验证

    一.解锁 1.代码 2.效果 1)执行效果 2)点位效果

  3. Nginx配置中文参数说明

    #定义Nginx运行的用户和用户组 user www www; # #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; # #全局错误日志定义类型,[ debu ...

  4. 【新生学习】第一周:深度学习及pytorch基础

    DEADLINE: 2020-07-25 22:00 写在最前面: 本课程的主要思路还是要求大家大量练习 pytorch 代码,在写代码的过程中掌握深度学习的各类算法,希望大家能够坚持练习,相信经度过 ...

  5. 【laravel】Eloquent 模型事件和监听方式

    所有支持的模型事件 在 Eloquent 模型类上进行查询.插入.更新.删除操作时,会触发相应的模型事件,不管你有没有监听它们.这些事件包括: retrieved 获取到模型实例后触发 creatin ...

  6. Java线程-- 线程池

    1.线程池概念 线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源. 为什么要使用线程池? 在java中,如果每个请求到达就创 ...

  7. LQB2013A05前缀判断

    上一道题,,,把if条件写错了,,,,找了半天的bug我都快哭了, 好了好了 看见这种填空题,先理解题意 然后把代码copy下来,把空格注释掉,然后运行到编译没有错. 再理一下它的思路 // // C ...

  8. LQB2017A02跳蚱蜢

    为什么第二题就这么难呜呜呜,这不是为难我吗!!! 可以明确的是,又是一个bfs 最少路径,找满足条件的那个层数 #include<iostream> #include<stdio.h ...

  9. 《闲扯Redis九》Redis五种数据类型之Set型

    一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. ...

  10. Java异步之《我call(),Future在哪里》

    我们大家都知道,在 Java 中创建线程主要有三种方式: 继承 Thread 类: 实现 Runnable 接口: 实现 Callable 接口. 而后两者的区别在于 Callable 接口中的 ca ...