详解Python中的Dict(下篇)

目录
  • dict的元素定位(键/值定位)和遍历
  • dict的复制(拷贝)
  • 总结

学委前面展示dict的概念和增删查改!这次我们把其他函数介绍补充了。

dict 的元素定位(键/值定位)和遍历

dict这种对象我们可以通过 keys() 获取所有的键的列表;

dict这种对象我们可以通过 values() 获取所有的值的列表.

这样有列表我们可以遍历整个dict对象。

但是更多使用下面的风格:

mydict = {
    'name': 'leixuewei',
    'date': '20211104'
}
print("遍历字典-----开始")
for k, v in mydict.items():
    print("key[%s] = value[%s]" % (k, v))  # 直接打印
print("遍历字典-----结束")

这几行代码是可以直接复制运行。

下面学委准备了更加全面的代码,展示了获取key/value和遍历操作等:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/3 11:34 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : dict_demo3.py
# @Project : hello

# 比如学委的信息作为一个字典
info_dict = dict()
info_dict['name'] = 'LEI_XUE_WEI'  # 或者改为 'levin'
info_dict['blogs'] = '93'  # 目前发表了93个博客文字。
info_dict['gongzhong_hao'] = '【雷学委】'  # 欢迎过来关注支持
info_dict['meta-data'] = dict()
print("包含特定key ?%s" % ('gongzhong_hao' in info_dict))
print('所有键的列表:%s ' % info_dict.keys())
print('所有值的列表:%s ' % info_dict.values())
print('获取key对应的值:', info_dict['name'])
# 获取但是不设置到info_dict内
print('获取key DemoKey 对应的值:', info_dict.get('DemoKey', '匿名用户雷学委'))
# print('获取key对应的值:', info_dict['DemoKey']) #这句会抛出异常:KeyError: 'DemoKey'
# 如果没有某个key,进行设置默认值并返回
print('获取key name对应的值:', info_dict.setdefault('name', '匿名用户雷学委'))
print('获取key DemoKey 对应的值:', info_dict.setdefault('DemoKey', '匿名用户雷学委'))
print('获取key DemoKey 对应的值:', info_dict['DemoKey'])
print("遍历字典-----开始")
for key, value in info_dict.items():
    print("\tkey[%s] = value[%s]" % (key, value))
print("遍历字典-----结束")
info_dict.clear()  # 清空整个字典对象

效果如下:

这些操作都是比较基础,但是必须随手就来的,所以必须敲熟了。

dict的复制(拷贝)

字典的复制可以通过copy函数来实现,但是它是浅拷贝,也就是拷贝了但不完全拷贝

简单来说就是拷贝key,但是新字典的值还是沿用旧字典的值的引用。

这里也顺带提一提fromkeys函数,这个创建的新字典,只照搬了key列表,新字典内所有值都是空的。

说这么多,我们看看字典的代码示例:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/3 11:34 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : dict_demo4.py
# @Project : hello
'''dict的拷贝问题'''
# 比如学委的信息作为一个字典
info_dict = dict()
info_dict['name'] = 'LEI_XUE_WEI'  # 或者改为 'levin'
info_dict['blogs'] = '93'  # 目前发表了93个博客文字。
info_dict['gongzhong_hao'] = '【雷学委】'  # 欢迎过来关注支持
info_dict['meta-data'] = dict()
# 选择指定key列表局部拷贝
keys_copied_dict = info_dict.fromkeys(['name', 'blogs', 'zone'])
print("keys_copied_dict :", keys_copied_dict)
# 浅拷贝//Shadow Copy: 全拷贝但不完全拷贝
copied_dict = info_dict.copy()
print("copied_dict :", copied_dict)
shadow_copied_dict = info_dict.copy()
print('shadow_copied_dict:', shadow_copied_dict)
## 雷学委提示:下面一行代码修改了‘meta-data'这个key对应的值,我们并没有直接修改shadow_copied_dict
info_dict['meta-data']['date'] = '04 Nov 2021'
print('info_dict:', info_dict)
print('shadow_copied_dict:', shadow_copied_dict) # 这里输出看到变化也传递给了 shadow_copied_dict

print("*"*16 + "清空info_dict")
info_dict.clear()
print('info_dict:', info_dict)  # clear 清空元素后 打印info_dict
print('shadow_copied_dict:', shadow_copied_dict)  # clear 清空元素后打印 copied_dict

效果如下:

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • 详解Python中映射类型的内建函数和工厂函数

    1.基本函数介绍 (1)标准类型函数[type().str()和 cmp()]         对一个字典调用type()工厂方法,会返回字典类型:"<type 'dict'>".调用str()工厂方法将返回该字典的字符串表示形式.         字典是通过这样的算法来比较的:首先是字典的大小,然后是键,最后是值.可是用cmp()做字典的比较一般不是很有用. 算法按照以下的顺序: 首先比较字典长度         如果字典的长度不同,那么用cmp(dict1, dict2

  • python-字典dict和集合set

    目录 1.字典 字典的相关操作 获取字典的长度 2.集合 1.字典 字典是python中的一种数据结构. 它的内容由**键-值(key-value)**的方式存在. dict拥有良好的查询速度,dict中值可以是任意python对象,对此对一个key赋value,后面的value会把前面的value覆盖. 字典的相关操作 # 字典中的内容放在大括号{}里,键值之间用冒号分隔,键值队之间用逗号 # method 1 myd = {'name': 'lmy', 'age': '19'} l = [(

  • Python中字典映射类型的学习教程

    字典是python语言中唯一的映射类型,用花括号{}表示,一个字典条目就是一个键值对,方法keys()返回字典的键列表,values()返回字典的值列表,items()返回字典的键值对列表.字典中的值没有任何限制,它们可以是任意python对象,但字典中的键是有类型限制的,每个键只能对应一个值,且键必须是可哈系的,所有不可变类型都是可哈希的.不可变集合frozenset的元素可作为字典的键,但可变集合set就不行了. 以下是字典类型的常用方法. clear():删除字典中所有元素. copy()

  • Python映射类型之dict详解

    目录 映射类型—dict list(d) len(d) d[key] d[key]=value deld[key] keyind iter(d) clear() copy() classmethodfromkeys(iterable[,value])fromkeys() get(key[,default]) items() keys() pop(key[,default]) popitem() reversed(d) setdefault(key[,default]) update([other

  • 详解Python中的Dict

    目录 什么是dict? 我们下面看看dict的增删查改 总结 什么是dict? dict全称为dictionary(字典),人如其名,像字典一样可以根据索引定位到特定的文字. 在python的dict中,我们可以通过key来定位到特定的value. 如上图,这就是dict的内部结构.key vs value 这样的配对,key3再次套娃嵌套内部取出来也是一个dict. 如此反复,一个dict可以变得很多层次,但是特征还是key value一一配对,只是value能是普通类型也能是dict. 之前

  • Python中的 Set 与 dict

    目录 一.Set集合类型 二.set和dict的数据类型限制 一.Set 集合类型 Set 集合类型 (交差并补) 特点 :无序 , 自动去重 集合用{}表示,元素间用逗号分隔 建立集合类型用{}或set() 建立空集合类型,必须使用set 定义一个普通的集合 setvar = {"shy","肉鸡","gala","小虎","狼牙山五壮士"} print(setvar , type(setvar) )  

  • 详解Python中映射类型(字典)操作符的概念和使用

    映射类型操作符 (1)标准类型操作符 字典可以和所有的标准类型操作符一起工作,但却不支持像拼接(concatenation)和重复(repetition)这样的操作.这些操作对序列有意义,可对映射类型行不通.         字典是如何比较的呢? 与列表和元组一样,这个过程比数字和字符串的比较更复杂些. (2)映射类型操作符 字典的键查找操作符([ ])         键查找操作符是唯一仅用于字典类型的操作符,它和序列类型里单一元素的切片(slice)操作符很相象.对序列类型来说,用索引做唯一

  • 详解Python中的Dict(下篇)

    目录 dict的元素定位(键/值定位)和遍历 dict的复制(拷贝) 总结 学委前面展示dict的概念和增删查改!这次我们把其他函数介绍补充了. dict 的元素定位(键/值定位)和遍历 dict这种对象我们可以通过 keys() 获取所有的键的列表; dict这种对象我们可以通过 values() 获取所有的值的列表. 这样有列表我们可以遍历整个dict对象. 但是更多使用下面的风格: mydict = { 'name': 'leixuewei', 'date': '20211104' } p

  • 详解Python中的Dict 2

    目录 dict 的元素定位(键/值定位)和遍历 dict的复制(拷贝) 总结 学委前面展示dict的概念和增删查改!这次我们把其他函数介绍补充了. dict 的元素定位(键/值定位)和遍历 dict这种对象我们可以通过 keys() 获取所有的键的列表; dict这种对象我们可以通过 values() 获取所有的值的列表. 这样有列表我们可以遍历整个dict对象. 但是更多使用下面的风格: mydict = { 'name': 'leixuewei', 'date': '20211104' }

  • 详解Python中namedtuple的使用

    namedtuple是Python中存储数据类型,比较常见的数据类型还有有list和tuple数据类型.相比于list,tuple中的元素不可修改,在映射中可以当键使用. namedtuple: namedtuple类位于collections模块,有了namedtuple后通过属性访问数据能够让我们的代码更加的直观更好维护. namedtuple能够用来创建类似于元祖的数据类型,除了能够用索引来访问数据,能够迭代,还能够方便的通过属性名来访问数据. 接下来通过本文给大家分享python nam

  • 详解Python 中的容器 collections

    写在之前 我们都知道 Python 中内置了许多标准的数据结构,比如列表,元组,字典等.与此同时标准库还提供了一些额外的数据结构,我们可以基于它们创建所需的新数据结构. Python 附带了一个「容器」模块 collections,它包含了很多的容器数据类型,今天我们来讨论其中几个常用的容器数据类型,掌握了这几个可以减少我们重复造轮子所带来的烦扰. namedtuple 相信你已经熟悉了元组.一个元组相当于一个不可变的列表,你可以存储一个数据的序列.这里要说的 namedtuple(命名元组)和

  • 详解python中的lambda与sorted函数

    lambda表达式 python中形如: lambda parameters: expression 称为lambda表达式,用于创建匿名函数,该表达式会产生一个函数对象. 该对象的行为类似于用以下方式定义的函数: def <lambda>(parameters): return expression python中的lambda函数可以接受任意数量的参数,但只能有一个表达式.也就是说,lambda表达式适用于表示内部仅包含1行表达式的函数.那么lambda表达式的优势就很明显了: 使用lam

  • 详解Python中import机制

    Python语言中import的使用很简单,直接使用import module_name语句导入即可.这里我主要写一下"import"的本质. Python官方定义: Python code in one module gains access to the code in another module by the process of importing it. 1.定义: 模块(module):用来从逻辑(实现一个功能)上组织Python代码(变量.函数.类),本质就是*.py文

  • 详解Python中*args和**kwargs的使用

    目录 1. 引言 2. 问题引入 3. Python中的*args 4. Python中的**kwargs 5. 总结 1. 引言 在本文中,我们将讨论 Python 中的 *args 和 **kwargs 及其用法和示例. 闲话少说,我们直接开始吧. 2. 问题引入 在Python中写函数的时候,我们经常需要给函数传值,这些值被称为函数参数. 我们不妨来举个栗子,我们实现加法运算如下: def add(x,y): return x+y print(add(2,3)) 输出: 5 如果进一步来说

  • 详解Python中for循环的定义迭代方法

    目录 Python的 for 循环 遍历字典 range()功能 break语句 和continue语句 else语句 Python的 for 循环 Python 是基于集合的迭代. for <var> in <iterable>: # <iterable>是对象的集合--例如,列表或元组. <statement(s)> # 循环体 a = ['曹操', '孫権', '劉備'] for i in a: print(i) 输出: 曹操孫権劉備 可迭代对象 ,可

  • 详解Python中Addict模块的使用方法

    目录 介绍 1.安装 2.用法 3.要牢记的事情 4.属性,如键.item等 5.默认值 6.转化为普通字典 7.计数 8.更新 9.Addict 是怎么来的 介绍 Addit 是一个Python模块,除了提供标准的字典语法外,Addit 生成的字典的值既可以使用属性来获取,也可以使用属性进行设置. 这意味着你不用再写这样的字典了: body = {     'query': {         'filtered': {             'query': {              

随机推荐