Python的序列类型——字典

            字典

  字典dict,存储的元素是一种无序的键值对(K-V),字典的K值为任意不可变数据类型(如:字符串、

数字、元组),V值为任意数据类型。在计算机内部保存数据的时候是用哈希表表示的,列表不支持转化为

哈希表的原因是K是变化的(列表的可以增、删、改),而元组却可以用哈希表表示。由于它的无序性,使

得它不能像列表那样使用切片。但是我们能对字典的中的K—Y值进行更改。使用for循环时(不能使用while),

默认之只输出K值,不输出V值。当然,在字典中也提供了相应的内置函数弥补这个缺陷。

  还有一点需要注意,当字典中有两个相同的K值时,前一个V值会被后一个V值覆盖。这里介绍一个典型

的例子。比如当K值为bool类型的时,计算机认为True为1,False为0,若它前面的K值有0或者1,则将会被

覆盖掉。在输出时True被替换为1,False被替换为0,这是在实验时才发现有这个特点。

  By the way,bool类型的非零值在计算机内部都会被表示为1。使得bool类型为False的值有0,  空(

None ),空字符串( " " ), 空元组( ( ) ),空列表( [ ] ),空字典( { } ),空集合( set( ) )。

1.  创建字典

#创建字典
info = {
    "k1":1,
    "k2":2,
    "k3":3,
       4:444,
       5:True,
       6:6,
    "k7":["a","b","c","d"],
    "k8":("e","f","g","h",),
    }

#测试
print(info[‘k1‘])   #取值
print(info[4])
print(info["k7"][2])
del info["k7"][2]   #删除K
print(info["k7"])   #显示删除后的内容

2.  K值相同时

info = {
       1:1,
    True:123,   #覆盖前一个的V值
   False:456,
    "k7":["a","b","c","d"],
    "k7":("e","f","g","h",),  #覆盖前一个的V值
    }
print(info)  #输出:{1: 123, ‘k7‘: (‘e‘, ‘f‘, ‘g‘, ‘h‘)}

3.  内置函数

3.1   fromkeys(*args, **kwargs)函数:是静态方法

#根据序列创建字典,由**kwargs指定统一的值
v = dict.fromkeys(["k1","k2","k3"],"see")
print(v)   #输出:{‘k1‘: ‘see‘, ‘k2‘: ‘see‘, ‘k3‘: ‘see‘}

3.2   setdefault()函数:  设置默认值,若设置的值已存在,则返回已存在的value

dic_ky = {"k1":"001","k2":"002"}
v1 = dic_ky.setdefault(‘k3‘,‘003‘)  #k3不存在,插入字典后返回一个值
v2 = dic_ky.setdefault(‘k1‘,‘111‘)  #设置失败,返回看字典K1的原值001
print(v1)   #输出:003
print(v2)   #输出:001

3.3   update()函数: 更新字典

#第一种方法
dic_ky = {"k1":"001","k2":"002"}
dic_ky.update({‘k1‘:‘111‘,‘k2‘:222})
print(dic_ky)  #输出:{‘k1‘: ‘111‘, ‘k2‘: 222}

#第二种方法
dic_ky.update(k1=‘a‘,k2=‘b‘,k3=‘c‘,k4=‘d‘)
print(dic_ky)  #输出:{‘k1‘: ‘a‘, ‘k2‘: ‘b‘, ‘k3‘: ‘c‘, ‘k4‘: ‘d‘}

3.4   keys函数: 取K值

for i in info.keys():
    print(i)

3.5   values()函数: 取V值

for i in info.values():
    print(i)

3.6   items()函数: 取K-V值,循环时需要使用两个迭代变量k,v

for k,v in info.items():
    print(k,v)

3.7   get(d=None)函数: 安全的取值函数,当取的K不存在时不会报错

v = info.get(‘k‘,"ERROR")  #ERROR是不存在时返回的值,若该参数忽略,则返回None
print(v)                #输出:ERROR

3.8   pop()函数: 将指定K值的V删除,返回值可以接收被删除的V值

v = info.pop(‘k‘,"ERROR")  #ERROR是不存在时返回的值,若该参数忽略,则返回None
print(v)                #输出:ERROR

3.9   popitem()函数: 返回被随机删除的键值对

k,v = info.popitem()  #返回被随机删除的键值对
print(k,v)          #输出:k8 (‘e‘, ‘f‘, ‘g‘, ‘h‘)

3.10 clear()函数 和 copy()函数不再列出。。。

原文地址:https://www.cnblogs.com/Lynnblog/p/8910245.html

时间: 2024-09-28 22:30:41

Python的序列类型——字典的相关文章

python中非序列类型期望值拷贝的解决方案

看下面这段代码: # -*- coding: utf-8 -*-import copy class Present(object):    def __init__(self, str_cmd):        self._str_cmd = str_cmd        print "进入Present时的地址:", id(self._str_cmd) def set_value(self):        temp = "test_cmd"        sel

走进Python世界(五)数据类型 5. 序列类型-字典(Dictionary)

什么是字典 字典是python中唯一的映射类型(哈希表) 字典是无序的 字典对象是可变的,但是字典的键必须使用不可变的对象,并且一个字典中可以使用不同的类型键值 keys() 或者values()返回键列表或者值列表 items()返回键值对的元组 创建字典 一般方法 常用的方式就是直接使用{} 一般语法如下: dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} 工厂方法 使用工厂方法dict来创建字典 一般语法如下: fdict=

python数据结构-序列之字典

字典是python中唯一内建的映射类型.(映射是通过名字引用值的数据结构). 字典中的值没有特殊顺序,但是都存储在一个特定的键(key)中.键可以是数字.字符串.元组. 一.创建字典: 1.创建字典: 如: phonebook={'zhangsan':'233333','lisi':'322233','wangwu':'4323334'} 字典由多个键及其对应的值构成的对组(也把键/值对 称为项).在phonebook示例中,名字是键,电话号码是值.键和值之间用冒号(:)隔开,项之间用逗号(,)

Python学习之通用序列类型数据详解

本文和大家分享的主要是python通用序列类型数据的相关操作,一起来看看吧,希望对大家学习python有所帮助. Python的序列,Python有6种内建的序列,包括:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.其中最为常用的是Python的列表和元组. Python的序列 Python有6种内建的序列,包括:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.其中最为常用的是Python的列表和元组. Python序列的应用 Pyt

Python的列表&元组&字典&集合

目录 列表(list) 列表的定义 列表的查询 增加数据 修改数据 删除数据 其它常用操作 元组(tuple) 元组的拆包 具名元组 字典(dict) 创建字典 字典添加数据 查询字典数据 修改字典数据 删除字典数据 其它操作 字典的遍历 集合(set) 集合的创建 访问集合 更新集合 删除集合 集合的操作符 集合应用 列表(list) ? 列表(list)是python以及其他语言中最常用到的数据结构之一.Python使用中括号 [ ] 来解析列表.列表是可变的(mutable)--可以改变列

Python序列结构--字典

字典:反映对应关系的映射类型 字典(dict)是包含若干“键:值”元素的无序可变序列 字典中元素的“键”可以是python中任意不可变数据,例如整数.实数.复数.字符串.元组等类型可哈希数据,“键”不允许重复,“值”是可以重复的.字典在内部维护的哈希表使得检索操作非常快. 字典创建与删除 使用“=” >>> aDict = {'server':'db.diveintopython3.org','database':'mysql'}>>> x = dict() # 创建空

Python基本语法_基本数据类型_序列类型详解

目录 目录 序列 序列的标准操作符 切片操作符 一个例子 序列的功能函数 enumerate 枚举出序列对象的元素 len 获取序列对象的长度 min 取出sequence中的最小值 max 取出sequence中的最大值 reversed 返回一个逆序访问的迭代器 sorted 序列的排序 sum 计算序列中的各项元素和 zip 混合两个序列对象 all 检测sequence中各项元素是否均为True any 检测序列中的任意元素是否为True 序列 序列是一类基本数据类型(字符串/列表/元组

python 序列类型

1.不可变的序列类型:tuple.range.str.set 001:对于tuple 类型有如下几种构造方式 1.() 构造一个空的元组. 2.a | (a,) 构造一个只有一个元素的元组. 3.tuple('1') 使用内置的tuple方法构造. 4.(1,2,3) 使用字面值的方法来构造一个元组. 002:对于range就没有这么多的花样了,只有一个构造方法可用 range(起始索引,结束索引,步长) 003:str 也没有太多的花样:它主要用字面值来构造,这些字面值可以用单引号,双引号,三

Python 列表API 序列类型   列表生成

列表API: 1.pop( )  :按照索引弹出元素,返回值为该元素.默认弹出最后一个元素: 例如:a=[1,2,3]; print(a.pop()); 输出结果是3 pop(正值) 从索引位置 pop(负值) 从列表倒数位置开始指定下标 2.remove( ):按照元素值弹出第一个匹配项,返回新列表 lists=[123,'xyz','zara','abc','xyz']   xyz元素从列表中移除  abc弹出 结果是:[123,'zara','abc'] abc 例如: lists=[12