dict字典

  • dict字典认知
    • 字典
      • 访问字典里面的成员
        • 如何快速创建一个字典
          • 访问字典成员
        • dict字典的修改
          • 添加
          • 注意:字典无序
            • 修改字典
            • 删除字典中的数据
    • 未完待续.....

dict字典认知

字典(dictionary) 是键值对形式的可变容器,可存储任意类型对象。而 列表(list) 是有序的对象结合,字典是无序的对象集合。何为有序?何为无序?有序即有 序列化结构 的,而无序则相反,之前有介绍过序列化结构(序列化结构:列表,字符串等),他们都有一个比较好理解的地方,就是 切片与索引 ( 何为切片?何为索引?),索引的好处就是我们在需要某一特定值的情况下可以快速的得到该值。
用请求百度翻译api作为例子(请求百度api需要token,token申请学习链接),随便认识一下字典:

#索引
#示例,请求百度翻译api,百度翻译返回的数据类型是json类型的。
import requests
import random
import json#使用百度的api是需要申请token的
token = '24.ba5b85a3a190c04301b7131c2.2592000.1666008679.282335-27512899'  # 你申请的access_token,30天内有效,这个已经过期了
url = 'https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token=' + tokenq = input('请输入需要翻译的内容:\n')
from_lang = 'zh'  #  源语种方向
to_lang = 'en'  #  目标语种方向
term_ids = ''  # 术语库id# Build request
#创建请求
#构建header部分Content-Type application/json;charset=utf-8
headers = {'Content-Type': 'application/json', 'charset': 'utf-8'}#字典,马上介绍
#创建请求体
payload = {'q': q, 'from': from_lang, 'to': to_lang, 'termIds': term_ids}#字典,马上介绍# Send request
#发送请求
r = requests.post(url, params=payload, headers=headers)
result = r.json()#将json数据进行类型转换
#定义翻译体
dict_translation_yuanshi = result['result']['trans_result'][0]['src']
print('翻译的原始内容:',dict_translation_yuanshi)
#定义翻译结果
dict_translation_result = result['result']['trans_result'][0]['dst']
print('返回翻译的结果:', dict_translation_result)

下面是上面代码的运行结果:

#运行结果
'''
请输入需要翻译的内容:
钟离
返回的原始数据为: {'result': {'from': 'zh', 'trans_result': [{'dst': 'Zhong Li', 'src': '钟离'}], 'to': 'en'}, 'log_id': 1573241566262597269}
翻译的原始内容: 钟离
返回翻译的结果: Zhong Li
'''

这些数据里除“原始数据”哪里没有处理过外,剩下的都是经过处理的(为了直观,我选择将原始代码输出出来),可以清楚的看到翻译结果是在

[{'dst': 'Zhong Li', 'src': '钟离'}]

这个list[ ] 列表里面的,那个我们是如何将其单独输出出来的,答案是索引,不过前面是字典部分,就先简单介绍一下字典:

字典

字典(dictionary,dict)的每个 键值 (key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中字典键的特性)不允许同一个键出现两次。(key为键,value为对应的值)

创建时如果同一个键被赋值两次,前一个的值会被后一个覆盖 2)值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。而因为列表是可变的,所以键不能为列表声明存在的数据集合。

字典与列表相比,最大的不同在于字典是无序的,其成员位置只是象征性的,在字典中我们需要通过键来访问成员,而不能通过其位置来访问成员。

访问字典里面的成员

先简单创建一个字典,口诀:
键在前,值在后,关系用冒号,不同键间用逗号,万事万物都在{ }

口诀并不好,我现编的,各位大佬请轻喷

#字典,键在前,值在后
#键名key : 键值
#如 'name': '芽衣' (name为键名,芽衣为键值)
dict_1 = {'name': '芽衣', 'age': 18, 'sex': '女'}#一个简单的字典
print(dict_1)             # 输出完整的字典
print(dict_1.keys())      # 以list列表形式,输出所有键
print(dict_1.values())    # 以list列表形式,输出所有值
print(dict_1.items())     # 以list列表形式,输出所有键值对元组

代码运行结果为:

'''
{'name': '芽衣', 'age': 18, 'sex': '女'}
dict_keys(['name', 'age', 'sex'])
dict_values(['芽衣', 18, '女'])
dict_items([('name', '芽衣'), ('age', 18), ('sex', '女')])
'''

字典就是这样的键值一一对应,相当于一个班里每一个人都有特定的学号,喊到那个人的学号或者名字的时候那个人就出来。当然这样可能不能很好的理解字典无序,再示例:

dict = {}
dict[3]='数字1'
dict['one'] = "1"
dict[2] = "2"
print(dict)                 # 输出完整的字典
print(dict['one'])         # 输出键为'one' 的值
print(dict[2])              # 输出键为 2 的值

运行结果为:

'''
{3: '数字1', 'one': '1', 2: '2'}
1
2
'''

注意:字典可以存储任意类型对象!!!

如何快速创建一个字典

使用dict()函数创建字典
dict函数作用:通过其他映射(比如其他字典)或者(键,值)对的序列建立字典。

'''
dict语法:
class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)
'''dict1 = dict(a='a', b='b', t='t')     # 传入关键字
print(dict1)
dict2 = dict(zip(['one', 'two', 'three'], [1, 2, 3]))   # 映射函数方式来构造字典
print(dict2)
dict3 = dict([('one', 1), ('two', 2), ('three', 3)])    # 可迭代对象方式来构造字典
print(dict3)'''
运行结果为:
{'a': 'a', 'b': 'b', 't': 't'}
{'one': 1, 'two': 2, 'three': 3}
{'one': 1, 'two': 2, 'three': 3}
'''

dict函数虽然好用,但是(重点): 使用dict()函数,dict值必须一一对应。
使用dict()函数,必须每个元组里的成比例。才能将元组转成 key:value

使用fromkeys()函数创建字典:

'''
语法:
dict.fromkeys(seq[, value])参数:
seq -- 字典键值列表。
value -- 可选参数, 设置键序列(seq)的值。返回值:
该方法返回一个新字典。fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。
'''dict3 = dict.fromkeys(['name','age'])
print(dict3)dict4 = dict.fromkeys(['name','age'],10)
print(dict4)

注意:fromkeys 方法只用来创建新字典,不负责保存。当通过一个字典来调用 fromkeys 方法时,如果需要后续使用一定记得给他复制给其他的变量。

访问字典成员

如果要想获取字典中某个键的值,可以通过访问键的方式来显示对应的值。


'''
dict_1 = {'name': '芽衣', 'age': 18, 'sex': '女'}#一个简单的字典
print(dict_1)             # 输出完整的字典
print(dict_1.keys())      # 以list列表形式,输出所有键
print(dict_1.values())    # 以list列表形式,输出所有值
print(dict_1.items())     # 以list列表形式,输出所有键值对元组
{'name': '芽衣', 'age': 18, 'sex': '女'}
dict_keys(['name', 'age', 'sex'])
dict_values(['芽衣', 18, '女'])
dict_items([('name', '芽衣'), ('age', 18), ('sex', '女')])
'''

get 获取指定key 对应的value,如果key不存在返回none——语法:字典名.get(key):

a = {'name': '芽衣', 'age': 18}
print(a.get('age'))
#结果为: 18

setdefault(key)方法 (有此键则查,无则增):

di2 = {'name': '芽衣', 'age': 18}
print(di2.setdefault('name'))#有此键则查
di2.setdefault('name1')#输入键名,不输入键值的话,键值会默认为None类型
print(di2)
'''
结果为:
芽衣
{'name': '芽衣', 'age': 18, 'name1': None}
'''

当然查询的前提是存在,如果你键名本来就不存在,那么又怎么查询,这个时候就会给我们报错了

dict_1 = {'name': '芽衣', 'age': 18, 'sex': '女'}
print('不存在的键名:', dict_1['不存在'])

报错:

'''
发生异常: KeyError
'不存在'
'''

dict字典的修改

添加

在python程序中字典的键是唯一的,但是值可以重复!

字典是一种动态结构,可以随时在其中添加“键值”对。首先指定字典名,然后用中括号将键括起来,最后写明这个键的值。

dict = {'1': "a", "2": "b", "3": "c"}      # 创建字典dict['4'] = 'd'      # 添加字典1
dict['5'] = 'e'      # 添加字典2print(dict)               # 输出字典dict中的值
print('键值:',dict['1'])
注意:字典无序

“键值”对的排列顺序与添加顺序不同。因为python不关心键值对的添加顺序,而只关心键和值之间的关联关系!!!

修改字典

首先指定字典名,然后使用中括号把要修改的键和新值对应起来。
这和字典中添加数据好像一样呢!其实可以很肯定的告诉大家,确实是完全一模一样的,总结:有这个键则修改,无则添加!

dict={'钟离':'往生堂堂主','神里凌华':'我老婆'}
print(dict) #未修改的原始字典
dict['钟离']='退休老人'
print(dict)  #修改后的字典
'''
输出结果为:
{'钟离': '往生堂堂主', '神里凌华': '我老婆'}
{'钟离': '退休老人', '神里凌华': '我老婆'}
'''

可以看到字典的数据已经被修改了,当然如果好奇为什么前面的print函数没有被改变的话,可以去看一下我之前的文章,了解一下 顺序结构和逻辑结构 的区别。

此外还可以用update 更新字典、将原字典和新字典整合,key(键名)重复的话则新的覆盖老的!

dict={'钟离':'往生堂堂主','神里凌华':'我老婆'}
print(dict) #未修改的原始字典
dict['钟离']='退休老人'
print(dict)  #修改后的字典
dict.update({'心海':'我老婆','钟离':'没有摩拉'})#注意数据类型
print(dict)
'''
输出结果为:
{'钟离': '往生堂堂主', '神里凌华': '我老婆'}
{'钟离': '退休老人', '神里凌华': '我老婆'}
{'钟离': '没有摩拉', '神里凌华': '我老婆', '心海': '我老婆'}
'''
删除字典中的数据

在Python程序中,对于字典中不再需要的信息,可以使用del语句将相应的“键值”对信息彻底删除。
在使用del语句删除字典中数据时,必须指定字典名和要删除的键。
上代码:

dict={'钟离':'往生堂堂主','神里凌华':'我老婆'}
print(dict) #未修改的原始字典
dict['钟离']='退休老人'
print(dict)  #修改后的字典
dict.update({'心海':'我老婆','钟离':'没有摩拉'})
print(dict)
del dict['钟离']
print(dict)
'''
输出结果为:
{'钟离': '往生堂堂主', '神里凌华': '我老婆'}
{'钟离': '退休老人', '神里凌华': '我老婆'}
{'钟离': '没有摩拉', '神里凌华': '我老婆', '心海': '我老婆'}
{'神里凌华': '我老婆', '心海': '我老婆'}
'''

可以看到名为钟离的键已经被删除了。
那么如何清空一个字典内所有数据?
:clear 清空字典——用法:字典名.clear()

dict={'神里凌华': '我老婆', '心海': '我老婆'}
dict.clear()
print(dict)
'''
输出结果为:
{}
'''

未完待续…

Python之dict字典相关推荐

  1. Python的dict字典结构操作方法学习笔记

    Python的dict字典结构操作方法学习笔记 这篇文章主要介绍了Python的dict字典结构操作方法学习笔记本,字典的操作是Python入门学习中的基础知识,需要的朋友可以参考下 一.字典的基本方 ...

  2. Python保存dict字典类型数据到Mysql,并自动创建表与列

    主要是工具类,使用pymysql来创建表与SQL 示例代码 import pymysqlclass UseMysql(object):def __init__(self, user, passwd, ...

  3. python(dict字典相关知识以及小例子:生成一个列表,存放100个随机整数,找出出现次数最多的数字)

    一.什么是字典? #字典的使用 #子字典是一个容器类,可以用来存储数据 #列表存储数据特点:1.有序的 2.每一个都有一个索引,通过索引可以对数据进行查询,修改,删除#字典存储数据: key:valu ...

  4. python中dict转换成list_python里dict变成list实例方法

    python里dict(字典)怎么变成list(列表)? 说明:列表不可以转换为字典 1.转换后的列表为无序列表 a = {'a' : 1, 'b': 2, 'c' : 3} #字典中的key转换为列 ...

  5. python xml字符串和dict字典互转

    python xml字符串和dict字典互转 字典 转 xml def trans_dict_to_xml(data_dict):"""字典转xml:param data ...

  6. 【Python】将字典(dict)转化为Dataframe

    [Python]将字典(dict)转化为Dataframe_张欣的博客-CSDN博客_python字典转dataframe dictory = {'a':1,'b':2} df = pd.DataFr ...

  7. python脚本例子_python dict 字典 以及 赋值 引用的一些实例(详解)

    最近在做一个很大的数据库方面的东东,要用到根据数值来查找,于是想到了python中的字典,平时没用过dict这个东东 用的最多的还是 list 和 tuple (网上查 用法一大堆) 看了一下创建字典 ...

  8. python映射类型-Python 映射类型字典dict操作定义

    Python映射类型字典基础知识:字典是用大括号{ }来表示,它是python中最灵活的内置数据类型.它是一个无序的集合,通过键来存取值,而不能用索引. 字典的创建和使用 字典的组成:字典是由大括号{ ...

  9. 【Python教程】dict字典的使用方法

    Python中的字典特点: 速度快,内部使用二分查找的方式 可以用来存储大量的关系型数据 字典是无序的 字典的定义方式: dic = dict(name ='zhangsan', age = 19)d ...

最新文章

  1. NullPointerException异常的原因及java异常??
  2. 华为企业管理经典案例_企业税务筹划-华为公司税筹案例分析
  3. mega_[MEGA DEAL] 2018 Essential JavaScript编码捆绑包(96%折扣)
  4. 基于MVC4+EasyUI的Web开发框架经验总结(13)--DataGrid控件实现自己主动适应宽带高度...
  5. java线程提交_从Java线程到线程池
  6. Bailian4104 单词翻转(POJ NOI0107-27)【堆栈+字符流】
  7. PHP学习之函数中的全局参数
  8. TCP/IP模型各个层次的功能和协议
  9. pkcs1与pkcs8格式RSA私钥互相转换
  10. LabVIEW 阵列信号处理
  11. 2019年1月编程语言排行榜
  12. springboot整合数据库
  13. jacob实现ppt转图片时存在的问题
  14. 3D游戏设计读书笔记二
  15. cmake使用boost库
  16. mumu模拟器屏蔽root,mumu模拟器下载
  17. php实现addon安装卸载,插件Addon文件
  18. 通用的综合大数据数据可视化展示html页面源码
  19. python时间戳转日期格式(保留毫秒级别)
  20. 字符串排序算法:低位优先排序(LSD)

热门文章

  1. Selenium原理精讲
  2. 25岁做什么,可以让你在5年后受益匪浅?
  3. 一个无线鼠标的HID Report Desc
  4. 计算长方形的周长和面积(类和对象java)
  5. 关于AP2331SA-7
  6. tar zxvf 简单了解
  7. 云开发表白墙微信小程序源码
  8. CI持续集成自动化测试——jenkins--Jenkins+Git+coding+maven 实现自动化测试环境搭建
  9. 两个关于自媒体短视频创作运营的问题及解决方案
  10. python(数据分析与可视化)二