一、集合

它的元素是唯一的,并无序的。

1、集合定义

s = set()

s = {1, 2, 3}

2、集合的方法

update版本的集合运算是在原集合上进行修改,返回值为None。

  • add()表示增加一个元素到集合。当添加一个已经存在的元素时,不会抛出异常。可hash的可以作为集合的元素,不可hash(list,set,bytearray dict)的不可以作为集合的元素。
  • update()表示增加一个可迭代对象。
  • remove()表示从集合中删除一个存在的元素,否则抛出一个KeyError异常。
  • discard()表示从集合中删除一个元素,当元素不存在时不抛出异常。
  • pop()表示从集合中随机返回一个元素,并从集合中删除此元素。当删除一个空集合时,抛出一个KeyError异常。
  • clear()表示清空所有元素。
  • difference()表示不在另一个集合的所有元素,返回一个新集合。
  • intersection()表示两个集合的交集,返回一个新集合。
  • union()表示两个集合的并集,返回一个新集合。
  • symmetric_difference()表示返回两个集合不相交的元素,返回一个新集合。
  • difference_update()表示在原集合修改,只保留第一个集合不相交的元素。
  • intersection_update()表示在原集合修改,保留两个集合的相同元素。
  • issuperset()表示是否为超集。
  • issubset()表示是否为子集。
  • isdisjoint()表示两个集体不相交。

二、字典

字典是一个键值对结构。它的Key必须是可hash的值并且是唯一的,value可以是任意的值。

1.字典定义

dt = dict()

dt = {}

2.下标操作

dt = {'a':2,'b':3}

dt['c']=4

3.字典的方法

  • update()表示增加元素,如果增加的key相同是就修改原来key的值。它的参数可以是以下几种情况:字典、由二元组构成的可迭代对象、关键字参数。
dt = {'a':2,'b':3}
dt['c'] = 4 dt.update([('g',3),('h',2)])
dt.update({'f':3,'e':2})
dt.update(u=22)
print(dt)
#结果:{'a': 2, 'b': 3, 'c': 4, 'g': 3, 'h': 2, 'f': 3, 'e': 2, 'u': 22}
  • pop()表示从字典中删除指定的key,如果key不存在就抛出keyError异常,但可以指定默认值时则不抛出异常。
dt = {'a': 2, 'b': 3, 'c': 4, 'g': 3, 'h': 2, 'f': 3, 'e': 2, 'u': 22}
d = dt.pop('gg',-2)
print(d)
print(dt)
#d结果:-2
#dt结果:{'a': 2, 'b': 3, 'c': 4, 'g': 3, 'h': 2, 'f': 3, 'e': 2, 'u': 22}
  • popitem()表示从字典中随机删除一个key,并返回一个键值对的元组。如果删除一个空字典时抛出一个KeyError异常。
dt = {'a': 2, 'b': 3, 'c': 4, 'g': 3, 'h': 2, 'f': 3, 'e': 2, 'u': 22}
d = dt.popitem()
print(d)
print(dt)
#d结果:('u', 22)
#dt结果:{'a': 2, 'b': 3, 'c': 4, 'g': 3, 'h': 2, 'f': 3, 'e': 2}
  • clear()表示清空字典所有键值对。
  • get()表示访问指定键的值,并可以给默认值。
  • setdefault()表示可以为某个key指定默认值。

三、字典的应用

  • 字典可能通过keys()方法返回所有keys,也可以通过values()方法返回所有的值。
  • 用len()方法统计字典的长度。

1、如何遍历一个字典?

dt = {'a':1,'b':2,'c':3}

for k in dt.keys():
print('{}=>{}'.format(k,dt[k]),end=' ') #结果:a=>1 b=>2 c=>3
dt = {'a':1,'b':2,'c':3}

for k,v in dt.items():
print('{}=>{}'.format(k,v),end=' ')
#结果:a=>1 b=>2 c=>3

2、enumerate用法

enumerate()是python的内置函数,并返回的是一个enumerate对象。对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。

lt = [1, 2, 3, 4, 5, 6]

for k,v in enumerate(lt):
print('{}=>{}'.format(k,v),end=' ') #结果:0=>1 1=>2 2=>3 3=>4 4=>5 5=>6

enumerate还可以接收第二个参数,用于指定索引起始值。

lt = [1, 2, 3, 4, 5, 6]

for k,v in enumerate(lt,1):
print('{}=>{}'.format(k,v),end=' ') #结果:1=>1 2=>2 3=>3 4=>4 5=>5 6=>6

3、OrderedDict的用法

collections模块里有一个OrderedDict,它可以记住字典中插入元素的先后顺序。

from collections import OrderedDict

ot = OrderedDict()
ot['b']=2
ot['a']=1
ot['e']=4
ot['1']=1
ot['c']=3
ot['2']=2 for k,v in ot.items():
print('{}=>{}'.format(k,v),end=' ')
lt = {'a', 'b', 'c', 'd'}

print(dict.fromkeys(lt,True))

#结果:{'a': True, 'b': True, 'd': True, 'c': True}

python(set、dict)的更多相关文章

  1. Python(变量、数据类型)

    常量:python中没有常量,只能通过名字特征来提示例如:全部大写,如 : OLDBOY_AGE=57 一.变量 变量声明变量#!/usr/bin/env python age=18gender1=' ...

  2. Python学习日记(四)——Python基本数据类型梳理(int、str、list、tuple、dict)

    数字(int) 1.创建方式 n1 = 123 n2 = int(123) 2.内存分配 #共同用一个内存地址的情况 n1 = 123 n2 = n1 #用两个内存地址的情况 n1 = 123 n2 ...

  3. python/零起点(一、字典)

    python/零起点(一.字典) dict( )字典 dict()强型转换成字典类型的数据类型: 字典的键(Key)必须是唯一不可变的 字典是无序,字典可变数据类型,且是可迭代的对象 字典清空操作案例 ...

  4. Python全栈工程师(for、列表)

    ParisGabriel     Python 入门基础         for:用来遍历可迭代对象的数据元素可迭代对象是指以此获取数据元素的对象可迭代对象包括:字符串 str 列表 list元组 t ...

  5. Python开发:环境搭建(python3、PyCharm)

    Python开发:环境搭建(python3.PyCharm) python3版本安装 PyCharm使用(完全图解(最新经典))

  6. python/零起点(一、字符串)

    python/零起点(一.字符串) 字符串(str) 字符串是可迭代的 str()强制转成字符串类型 字符串是有序的,且不可变的数据类型. 字符串转换整型的案例: 1 name=['guobaoyua ...

  7. python/零起点(一、列表)

    python/零起点(一.列表) 列表(list)list()可以强行转换数据类型为列表,列表是可迭代对象 列表是有序的,且列表是可变的数据类型 列表中的元素可以是(字符串.整型.元祖.列表.字典.集 ...

  8. Python/MySQL(一、基础)

    Python/MySQL(一.基础) mysql: MYSQL : 是用于管理文件的一个软件 -socket服务端 (先启动) -本地文件操作 -解析 指令[SQL语句] -客户端软件 (各种各样的客 ...

  9. Python全栈工程师(运算符、if)

    ParisGabriel       Python 入门基础   比较运算符:< 小于<= 小于等于> 大于>= 大于等于== 等于!= 不等于 语法: 表达式1>表达式 ...

随机推荐

  1. mac 入门操作

    1. 打开制定目录 在finder里使用command+shift+g 快捷键可以完成到达某路径的操作选中文件/目录,显示简介可以查看路径 2. home end pageUp pageDown 在苹 ...

  2. Java中数据类型转换大全(个人总结)

    一.字符串转换为其他类型 1.将字符串转化为int型 (1)方法一 int i = Integer.parseInt(String str); (2)方法二 int i = Integer.value ...

  3. 【LeetCode题解】19_删除链表的倒数第N个节点(Remove-Nth-Node-From-End-of-List)

    目录 描述 解法:双指针 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解笔记可以访问我的 github. 描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回 ...

  4. netty源码解解析(4.0)-4 线程模型-概览

    netty线程体系概览 netty的高并发能力很大程度上由它的线程模型决定的,netty定义了两种类型的线程: I/O线程: EventLoop, EventLoopGroup.一个EventLoop ...

  5. ZOJ Problem Set - 3878 Convert QWERTY to Dvorak

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3878 /* 问题 很有意思的一道题目,纯模拟,注意细节和最后一 ...

  6. 公众号开发之wx-tools+springboot应用实战-音乐爬虫推送[JAVA]

    springboot+wx-tools实践!音乐爬虫推送公众号DEMOGitHub地址:wx-tools 最终DEMO源码地址: music_collector 先理一下大概的开发步骤: 1. 创建一 ...

  7. [转]Microsoft SQL SERVER 2008 R2 REPORT SERVICE 匿名登录

    本文转自:https://www.cnblogs.com/Zouzhe/p/5736070.html SQL SERVER 2008 R2 是微软目前最新的数据库版本,在之前的SQL SERVER 2 ...

  8. ASP.NET开发,从二层至三层,至面向对象 (5)

    此是一系列博文,最后一篇了.也是面向初学者而作,望你们能有更好,更多对ASP.NET面向对编程了解与认识. 前一篇中<ASP.NET开发,从二层至三层,至面向对象 (4)>http://w ...

  9. (转)mssql sp_addextendedproperty 用法,作用

    sp_addextendedproperty [ @name = ] { 'property_name' } [ , [ @value = ] { 'value' } [ , [ @level0typ ...

  10. 如何通过DataGridView 实现单元格合并和二维表头

    先看下实现出来的效果(这里随便写了几组数据,用来测试) 先初始一个DataGridView 设置哪几列 DataGridView 里男女这两列的 AutoSizeMode 可以设置Fill. publ ...