python(set、dict)

一、集合

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

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}

原文地址:https://www.cnblogs.com/orna/p/8331486.html

时间: 2024-11-02 04:41:25

python(set、dict)的相关文章

Python(变量、数据类型)

一.变量 变量声明变量#!/usr/bin/env python age=18gender1='male' gender2='female' 变量作用:保存状态(程序的运行本质是一系列状态的变化,变量的目的就是用来保存状态,变量值的变化就构成了程序运行的不同结果.)例如:CS枪战,一个人的生命可以表示为life=active表示存活,当满足某种条件后修改变量life=inactive表示死亡. 变量命名规则遵循标识符命名规则,详见第二篇 name='lhf':'lhf'才是内存变量,name只是

【Python学习之路】——Day10(线程、进程)

Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. #!/usr/bin/env python # -*- coding:utf-8 -*- import threading import time def show(arg): time.sleep(1) print 'thread'+str(arg) for i in range(10): t = threading.Thread(target=show, args=(i,)) t.start() p

python - 发送邮件(smtplib、email)

发送邮件(smtplib.email) 通常在API和UI自动化测试后,都需要将运行的测试报告发送给指定邮件组接收,这个邮件发送功能可以利用python自带的两个模块完成: smtplib模块主要负责发送邮件如:连接邮箱服务器,登录邮箱,发送邮件 email模块主要负责构造邮件如:发件人,收件人,主题,正文,附件.图片.HTML等 一.smtplib 1.smtplib示例: import smtplib # 实例化SMTP连接(IP,端口) smtp = smtplib.SMTP_SSL(se

Flask框架:(一、安装)

Flask 依赖于两个外部库:Werkzeug 和 Jinja2 . Werkzeug 是一个 WSGI (在 web 应用和多种服务器之间开发和部署的标准 Python 接口) 的工具集,Jinja2 负责渲染模板. 1.安装 参考:http://blog.csdn.net/qwiwuqo/article/details/8970621 Flask安装的前提条件 1.已安装python2.x版本 2.已安装easy_install 在安装flask之前,你必须要先安装python和easy_i

Django 09-1模型层 查询(分组、聚合)

Django 查询(分组.聚合) 一.聚合查询 # 聚合函数的使用场景 -- 单独使用:不分组,只查聚合结果 -- 分组使用:按字段分组,可查分组字段与聚合结果 # 导入聚合函数 from django.db.models import Avg, Max, Min, Count, Sum 单独聚合查询:aggregate(*args,**kwargs) # 语法: aggregate(别名=聚合函数('字段')) # 规则: 1.可以同时对多个字段进行聚合处理:aggregate(别名1=聚合函

LeetCode 145 Binary Tree Postorder Traversal(二叉树的后续遍历)+(二叉树、迭代)

翻译 给定一个二叉树,返回其后续遍历的节点的值. 例如: 给定二叉树为 {1, #, 2, 3} 1 2 / 3 返回 [3, 2, 1] 备注:用递归是微不足道的,你可以用迭代来完成它吗? 原文 Given a binary tree, return the postorder traversal of its nodes' values. For example: Given binary tree {1,#,2,3}, 1 2 / 3 return [3,2,1]. Note: Recur

图形学_画线算法(DDA、Bresenham)

1. DDA算法实现直线绘制(需先安装easyx,百度下载即可) 1 #include "easyx.h" 2 #include "math.h" 3 #include "windows.h" 4 #include "stdio.h" 5 #include "stdlib.h" 6 #include "conio.h" 7 #include "graphics.h"

Http和Nginx反代至Tomcat(LNMT、LAMT)

Http和Nginx反代至Tomcat(LNMT.LAMT) ================================================================================ 概述: 本章将主要介绍Http和Nginx反代至Tomcat,具体内容如下: LNMT部署并实现动静分离 LAMT部署的实现方式: ·proxy_http_module代理配置 ·proxy_ajp_module代理配置 Tomcat脚本(启动.停止.重启) ========

基于C/S架构的3D对战网络游戏C++框架 _02系统设计(总体设计、概要设计)

本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): 1.实现基本通信框架,包括对游戏的需求分析.设计及开发环境和通信框架的搭建: 2.实现网络底层操作,包括创建线程池.序列化网络包等: 3.实战演练,实现类似于CS反恐精英的3D对战网络游戏: 技术要点:C++面向对象思想.网络编程.Qt界面开发.Qt控件知识.Boost智能指针.STL算法.STL.