python映像和集合类型

字典

一、字典的概述

字典是python中唯一的映射类型,映射类型对象里哈希值和指向对象值是1:n的关系

字典对象是可变的,可以认为是一个容器类型,能存储任意个python对象

字典对象和序列对象的区别:

1.存储和访问数据的方式不同

2.映射类型的数据是无序排序

3.序列类型只能是数字类型的键,映射类型可以是其他类型的键

4.映射类型不要求用数字值做索引从一个容器中取对应的数据。可以用键直接映射到值

(1).字典的创建和赋值

创建字典只需要把一个字典赋值给一个变量

如:dict={‘name’:’earth’,’port’:80}

2.可用工厂方法dict()创建

如:fdict=dict(([‘x’,’1’],[‘y’,2]))

3.可用fromkeys()创建一个默认的字典

如:ddict ={}.fromkeys((‘x’,’y’),-1)

(2):字典的访问

1.循环其键值。如:

for key in dict.keys():

print ‘key=%s,value=%s’ %(key,dict[key])

2.用迭代器遍历字典,只需要知道字典的名字即可,如

dict={‘name’:’zhang’,’port’:80}

for key in dict:

print ‘key=%s,value=%s’ %(key,dict[key])

3.获得字典的某个元素值

dict[key] 如:dict[name]=’zhang’

若需检查字典是否有某一个key 可以用in 或not in 等

(3):字典的更新

1.添加一个新数据项或新元素

可以用字典变量名[key]=value;如 test={age:20.} test[name] =’student’ 则可得到tet={age:20,name:’student’}

2.改变一个已存在的数据项

字典的修改和添加类似,可以用字典变量名[key]=新value

3.删除一个已存在的数据项

del dict[key]:删除对应的键值,若用字典变量名则删除整个字典.如 del dict

dict.clear() :清空字典内容

pop():删除对对应的值

二、映射类型操作符

(1).字典的键查找操作符[]

1.键查找操作符是唯一用于字典类型的操作符,和序列中的单一元素切片相似

2.字典是用键查询,序列用索引做唯一参数或下标获取

(2).成员关系操作(in not in)

in 和not in 检查某个键是否在字典中

如:name in dict

三、内建函数和工厂函数

(1).标准类型函数

cmp()

type()

str(0

(2).映射相关函数

dict():用于创建字典,若不提供参数,则会生成空字典。

如 dict(zip((‘x’,’y’),(1,2))) => {‘x’:1,’y’:2}

或者 dict([‘x’,1],[‘y’,2]) => {‘x’:1,’y’:2}

len():返回所有元素的数目

如 dict={‘x’:1,’y’:2} 则len(dict)=2

hash()’

(3):内建方法

1.keys():返回一个列表包含字典所有的键 dict.keys() =>[‘x’,’y’]

2.values():返回一个列表,包含字典所有的值 如dict.values => [1,2]

3.items():返回一个列表包含所有含有(键,值)的元组 如dict.items() => [(‘x’,1),(‘y’,2)]

4.update() 如dict.update(dict2) 将字典dict2的key-value添加到字典dict 如dict2={‘x’:1,’y’:2,’z’:3} dict.update(dict2)

=> {‘x’:1,’y’:2,’z’:3}

5.setdefault() 和set()类似,若字典不存在key 由dict[key]=default为它赋值

6.clear() 删除字典中所有元素 如 dict.clear() => {}

7.copy() 返回一个字典的副本 如dict2=dict.copy() => {‘x’:1,’y’:2}

四、字典的键

字典的键必须是不可变数据类型,如果用元组做键,那必须要保证元组内的对像也是不可变类型。可变数据类型对像不能做键。

集合

一、集合类型

set是不同元素组成的集合,python中的集合对象是一组无序排列的可hash的值。

集合分为两种类型.可变集合(set)和不可变集合(frozenset)。可变集合可以删除或添加元素,不可变集合不充许;可变集合不是可 哈希的 不能用作字典的键,也不能用作其他集合中的元素,不可变集合真好相反

(1)、集合的创建

主要有set()和frozenset()方法

如:s=set(‘abcd’) => set([‘a’,’b’,’c’,’d’]); frozenset(‘BOOK’) =>frozenset([‘B’,’O’,’O’,’K’])

(2).集合的访问

可以遍历和检查某项元素是否是一个集合的元素

如: ‘K’ in s

(3).更新集合

可以用集合内建方法进行添加,删除集合的成员

如:

s.add(‘z’)

s.update(‘pypj’)

s-=set(‘pypj’)

s.remove()

(4).如何删除集合中的成员和集合

A.集合超出其作用范围

B.调用del将他们直接清除当前的名称空间

二、集合类型操作符

set集合是无序的,不能通过索引和切片来做一些操作

三、内建函数和内建方法

(1).内建函数:

len():返回集合的基数

set()和frozenset()返回可变集合和不可变集合 若不提供参数则会生成空集合

(2).内建方法:可分为适用于所有的集合方法和适用于可变集合的方法

1.仅适用于可变集合的如下:

s.update(t) s.add(obj) s.remove(obj) s.discard(obj) s.pop():删除集合s中的任意一个对象

s.clear() 删除集合s中的所有元素

本节例子实现:

该例子用于模拟管理登录系统

#!/usr/bin/env python
#-*-coding:utf-8 -*-
db = {}
def newuser():
    prompt = ‘login desired‘
    while True:
        name = raw_input(prompt)
        if db.has_key(name):
            prompt = ‘name taken, try anothers‘
            continue
        else:
            break
    pwd = raw_input(‘password:‘)
    db[name] = pwd

def olduser():
    name = raw_input(‘login: ‘)
    pwd = raw_input(‘passwd: ‘)
    passwd = db.get(name)
    if passwd == pwd:
        print ‘welcome back‘,name
    else:
        print ‘login incorrect‘

def showmenu():
    prompt = ‘‘‘
(N)ew User Login
(E)xisting User Login
(Q)uit
Enter choice:
‘‘‘
    done = False
    while not done:
        chosen = False
        while not chosen:
            try:
                choice = raw_input(prompt).strip()[0].lower()
            except (EOFError, KeyboardInterrupt):
                choice = ‘q‘
            print ‘\nyou picked:[%s]‘ %choice
            if choice not in ‘neq‘:
                print ‘invalid option, try again‘
            else:
                chosen = True

        if choice == ‘q‘ :done = True
        if choice == ‘n‘ :newuser()
        if choice == ‘e‘ :olduser()

if __name__ == ‘__main__‘:
    showmenu()
时间: 2024-10-20 17:31:38

python映像和集合类型的相关文章

Python核心编程(第七章)--映像和集合类型

字典:它是一个容器类型,能存储任意个数的Python对象,也包括其他容器类型,Python的字典是作为可变的哈希表实现的 映像类型中的数据是无序排列的 可以用工厂方法dict()来创建字典,也可以用fromkeys()来创建一个默认键 检查一个字典中是否有某个键的最好方法是用字典的has_key()方法,或者in 或not in 两个字典进行比较时,先比较两个字典元素数,当元素数相同时比较键大小,当键相等比较值 比较算法: 映射类型的內建函数: hash()函数,用来判断某个对象是否可以做一个字

【Python学习之四】集合类型

环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6 一.字符串:字符串实际上就是字符的数组1.切片是指对操作的对象截取其中一部分的操作.字符串.列表.元组都支持切片操作.(1)python中从左侧开始,下标 0 开始:从右侧,下标从-1开始:(2)切片的语法:[起始:结束:步长],选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)

《Python核心编程》 第七章 映射和集合类型 - 习题

课后习题 7–1. 字典方法.哪个字典方法可以用来把两个字典合并到一起? 答: dict1 = {'1' :' python' } dict2 = {'2' :"hello" } dict1.update(dict2) dictAll = dict1 print dictAll Result: {'1': ' python', '2': 'hello'} 7–2. 字典的键.我们知道字典的值可以是任意的 Python 对象,那字典的键又如何呢?请试 着将除数字和字符串以外的其他不同类型

Python回顾与整理5:映像和集体类型

0.说明 依然是按照前面介绍的几种序列类型的思路来总结字映像类型和集合类型,即先做一个介绍,再讨论可用操作符.工厂函数.内建函数和方法. 1.映射类型:字典 映射类型被称做哈希表,而Python中的字典对象就是哈希类型,即它是按照这样的方式来存储数据:(哈希表的算法)是获取键,对键执行一个叫做哈希函数的操作,并根据计算的结果,选择在数据结构的某个地址中来存储对象的值.任何一个值存储的地址取决于它的键,正因为这种随意性,哈希表中的值是没有顺序的,所以Python中的字典对象中的元素也是无序的. 下

07 映射和集合类型 - 《Python 核心编程》

?? 映射类型: 字典 ?? 操作符 ?? 内建函数 ?? 内建方法 ?? 字典的键 ?? 集合类型 ?? 操作符 ?? 内建函数 ?? 内建方法 ?? 相关模块 7.1 映射类型:字典 字典是Python 语言中唯一的映射类型. 映射类型对象里哈希值(键) 和指向的对象(值)是一对多的关系. 字典类型和序列类型容器类(列表.元组)的区别是存储和访问数据的方式不同. 序列类型只 用数字类型的键(从序列的开始起按数值顺序索引). 映射类型可以用其他对象类型做键:一般最常 见的是用字符串做键(key

【Python 学习笔记 2】Python中常用集合类型:List,Tuple,Set,Dict使用简介

在使用Python编程中,我们最常用的几种集合类型是:List,Tuple,Set,Dict:下面简单聊聊这几种集合类型: List 列表:相当于一个数组,不过list的长度是自动变化的而且列表元素自由的,不必每个元素都是同一种类型.它的简洁的定义方式是a=[].是一种有序组合,可以删除和添加其中的元素: List的基本操作如下: ##生成一个list,并赋值给list_ex >>> list_ex=[1,3,4,"list","Tuple",&q

Python核心编程读笔 5: 映射和集合类型

第七章 映射和集合能力 一 字典(python中唯一的映射类型) 1 基本 创建和赋值: 正常创建:>>>dict = {'name':'earth', 'port':80} 用工厂函数dict()创建: >>> fdict = dict((['x', 1], ['y', 2])) >>> fdict {'y': 2, 'x': 1} 使用fromkeys()创建一个默认字典: >>> ddict = {}.fromkeys(('x'

2015/9/4 Python基础(8):映射和集合类型

Python里唯一的映射类型是字典.映射类型对象里,hash值(key)和指向的对象(值)是一对多的关系.字典对象是可变的,这一点上很像列表,它也可以存储任意个数任意类型的Python对象,其中包括容器类型.字典类型和序列类型的区别是存储和访问数据的方式不同.序列类型只用数字类型的键(从序列开始按数值顺序索引.)映射类型的键(key)可以是其他的对象类型(一般是字符串),映射类型的键直接或间接地和存储的数据值相关联.而在映射类型中,数据是无序排列的. 一个字典条目的语法格式是 键:值. 多条字典

python基础---集合类型(Sets)

集合类型(Sets) 集合对象是不同的(不可重复)hashable对象的无序集合.常见用法包括:成员关系测试.移除序列中的重复.以及科学计算,例如交集.并集.差分和对称差分.通俗点来说,集合是一个无序不重复元素的数据集,其基本功能是进行成员关系测试和消除重复元素. 目前有两种内置的集合类型:set 和 frozenset.set类型是可变的--可以使用add() 和 remove()等方法更改其内容.由于它是可变的,它没有hash值,因此它不能被当做字典的键值或另一集合的元素.frozenset