zoukankan      html  css  js  c++  java
  • Python数据类型-字典

    这一篇教程,我们来了解Python中的第四种数据结构–字典(dict)。

    字典同样是一个序列,不过字典的元素是由key(键,可理解为关键字或名称)与values(值)组成。

    就好像我们查字典,一个拼音对应着与之关联的一个或多个汉字,拼音就key,而对应的汉字就是values。

    字典两侧和集合一样是大括号,其中每一个元素都是“key:values”的形式,并且每个元素间以逗号分隔。

    例如:{‘yue’:[‘月’,’约’,’乐’],’ri’:’日’,’le’:’了’,’liao’:’了’}

    字典中的值没有特定顺序,但必须用一个特定的键存储。

    字典的键必须是不可变的数据类型,可以是数字、字符串或者元组。

    说明:这种能够通过名称引用值的数据类型称做映射(Mapping),字典是Python中唯一内建的映射类型。映射的概念好像比较难懂,以我个人的理解,映射就是名称集合与值集合的对应关系。名称集合中每个名称都是唯一的(即Key不可重复),并有唯一的值(Key与Value相对应);值集合中,值可以是唯一的也可以是重复的,但每个值也只能有唯一的名称。

    使用字典需要注意以下几点:

    • 字典中不能够出现相同的键,但可以出现相同的值。
    • 字典中的键不能够更改,但值可以更改。
    • 字典的值可以为Python中的任何对象。

    接下来,我们来看一下关于字典的相关操作。

    1、创建字典

    创建字典可以直接按格式创建,也可以使用dict()方法进行创建。

    dict(**kwarg):参数**kwarg为可变关键字参数。

    dict(mapping, **kwarg):参数mapping为映射函数。

    dict(iterable, **kwarg):参数iterable为可迭代对象。

    示例代码:

    d = {} # 创建空字典
    d = dict() # 创建空字典
    d = {'yue':['月','约','乐'],'ri':'日','le':'了','liao':'了'} # 创建字典
    d = dict(小楼='好帅', 小美='好美') # 通过可变参数创建字典
    d = dict([('小楼','好帅'), ('小美','好美')]) # 通过可迭代对象(列表)创建字典

    另外,还有一种字典的创建方式,通过fromkeys(seq,value)方法进行创建,参数seq为包含key的序列,参数value为key的默认值。

    示例代码:

    k = ['小楼','小黑'] # key的列表
    d1 = dict.fromkeys(k) # 从key的列表创建字典
    d2 = dict.fromkeys(k,'哦哦') # 从key的列表创建字典,并赋予默认值
    print (d1) # 显示输出结果为:{'小楼': None, '小黑': None}
    print (d2) # 显示输出结果为:{'小楼': '哦哦', '小黑': '哦哦'}

    2、查询元素

    首先,查询字典中的元素。

    我们可以使用items()方法,通过items()方法可以获取到字典中所有元素的迭代器。

    提示:关于迭代器,大家可以暂时不用关心,在后面的教程中有专门的讲解。

    示例代码:

    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    print (d.items())  # 显示输出结果为:dict_items([('小楼', '好帅'), ('小美', '好美')])

    然后,查询字典中元素的键。

    我们可以使用keys()方法,通过keys()方法可以获取到字典中所有元素键的迭代器。

    示例代码:

    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    print (d.keys())  # 显示输出结果为:dict_keys(['小楼', '小美'])

    最后,查询字典中元素的值。

    查询元素值有多种方法:

    第一种,通过键可以获取相对应的值:字典[键]

    示例代码:

    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    
    print (d['小楼'])  # 显示输出结果为:好帅
    print (d['小美'])  # 显示输出结果为:好美

    第二种,通过get(k,default)方法查询,参数k为查询的键,参数default为未查询到结果时的默认值。

    示例代码:

    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    print (d.get('小楼', '男神'))  # 显示输出结果为:好帅
    print (d.get('小白', '女神'))  # 显示输出结果为:女神

    第三种、通过values()方法可以获取到字典中所有元素值的迭代器。

    示例代码:

    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    print (d.values())  # 显示输出结果为:dict_values(['好帅', '好美'])

    3、添加元素

    添加单个元素:

    首先,可以通过“字典[键]=值”的方式进行添加,如果字典中不存在相同的键则自动添加,否则修改已存在的键所对应的值。

    示例代码:

    d = {'小楼': '好帅', '小美': '好美'}
    d['小白'] = '好棒'  # 添新元素到字典
    d['小黑'] = '好黑', '好白'  # 添加值为元组的新元素到字典
    print (d)  # 显示输出结果为:{'小楼': '好帅', '小美': '好美', '小白': '好棒', '小黑': ('好黑', '好白')}

    另外,还可以通过setdefault(k,default)方法进行添加,参数k为指定的键,参数default为默认值。当字典中存在指定的键时,能够返回该键所对应的值;如果不存在指定的键时,则会返回参数default中设置的值,同时,在字典中会添加新元素,新元素的键即为参数k,值即为参数default。

    示例代码:

    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    print (d.setdefault('小楼', '好棒'))  # 字典中存在相应的键,则返回该键对应的值,显示输出结果为:好帅
    print (d.setdefault('小白', '好爽'))  # 字典中不存在相应的键,则返回default参数的值,显示输出结果为:好爽
    print (d)  # 当字典中不存在相应的键时,添加新元素,显示输出结果为:{'小楼': '好帅', '小美': '好美', '小白': '好爽'}

    添加多个元素:通过update(m,kwargs)方法进行添加,参数m(mapping)为映射函数,kwargs为可变参数。

    示例代码:

    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    d.update(小白='好白', 小黑='好黑')  # 通过可变参数添加多个元素
    print (d) # 显示输出结果为:{'小楼': '好帅', '小美': '好美', '小白': '好白', '小黑': '好黑'}
    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    d.update((('小白','好白'),('小黑','好黑')))  # 通过元组添加多个元素
    print (d) # 显示输出结果为:{'小楼': '好帅', '小美': '好美', '小白': '好白', '小黑': '好黑'}
    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    d.update([('小白','好白'),('小黑','好黑')]) # 通过列表添加多个元素
    print (d) # 显示输出结果为:{'小楼': '好帅', '小美': '好美', '小白': '好白', '小黑': '好黑'}
    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    d.update({'小白': '好白', '小黑': '好黑'}) # 通过字典添加多个元素
    print (d) # 显示输出结果为:{'小楼': '好帅', '小美': '好美', '小白': '好白', '小黑': '好黑'}
    d1 = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    d2 = {'小白': '好白', '小黑': '好黑'}  # 创建字典
    d1.update(d2) # 合并字典元素
    print (d) # 显示输出结果为:{'小楼': '好帅', '小美': '好美', '小白': '好白', '小黑': '好黑'}

    4、修改元素值

    修改某个键对应的元素:字典[键]=新值

    示例代码:

    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    d['小楼'] = '好棒'
    print (d)  # 显示输出结果为:{'小楼': '好棒', '小美': '好美'}

    5、删除元素

    使用del指令可以通过键删除某个元素:del 字典[键]

    示例代码:

    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    del d['小美']  # 删除元素
    print (d)  # 显示输出结果为:{'小楼': '好帅'}

    6、取出元素与元素值

    我们可以使用popitem()方法在字典中取出元素。

    示例代码:

    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    print (d.popitem())  # 显示输出结果为:('小美', '好美')
    print (d)  # 显示输出结果为:{'小楼': '好帅'}

    并且,我们可以使用pop(k,default)方法在字典中取出指定元素的值,参数k为指定元素的键,参数default为未取到结果时的默认值。

    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    print (d.pop('小楼'))  # 显示输出结果为:好帅
    print (d.pop('小白', '好爽'))  # 显示输出结果为:好爽
    print (d)  # 显示输出结果为:{'小美': '好美'}

    7、设置默认值

    d = {'小楼': '好帅', '小美': '好美'}  # 创建字典
    print (d.setdefault('小楼', '好棒'))  # 显示输出结果为:好帅
    print (d.setdefault('小白', '好爽'))  # 显示输出结果为:好爽
    print (d)  # 显示输出结果为:{'小楼': '好帅', '小美': '好美', '小白': '好爽'}

    8、其他

    字典也支持使用以下方法:

    clear():清空字典

    copy():复制字典:

    len():获取字典元素数量

    max():获取字典中最大的键

    min():获取字典中最小的键

    同时,字典也支持通过in和not in进行成员关系的判断。

    大家可以参照集合中这些方法的使用,在此不做举例。

  • 相关阅读:
    JDK的KEYTOOL的应用,以及签署文件的应用(原创)
    2017年Android SDK下载安装及配置教程(附带原文地址)
    C# 使用 MemoryStream 将数据写入内存
    iOS7下隐藏status bar的详细研究
    如何布局包含Image和Title的UIButton
    自定义iOS7导航栏背景,标题和返回按钮文字颜色
    UIRefreshControl自动刷新
    SDWebImage缓存图片的机制(转)
    iOS6的旋屏控制技巧
    IOS开发之----NSDictionary,JSON和XML互相转换
  • 原文地址:https://www.cnblogs.com/konglinqingfeng/p/9577911.html
Copyright © 2011-2022 走看看