详解Python中的Dict(下篇)

 更新时间:2021年12月16日 17:24:57   作者:雷学委  
这篇文章主要为大家介绍了Python中的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

效果如下:

总结

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

相关文章

  • 苹果Macbook Pro13 M1芯片安装Pillow的方法步骤

    苹果Macbook Pro13 M1芯片安装Pillow的方法步骤

    Pillow作为python的第三方图像处理库,提供了广泛的文件格式支持,本文主要介绍了苹果Macbook Pro13 M1芯片安装Pillow,具有一定的参考价值,感兴趣的可以了解一下
    2021-11-11
  • python scatter散点图用循环分类法加图例

    python scatter散点图用循环分类法加图例

    这篇文章主要为大家详细介绍了python scatter散点图用循环分类法加图例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • python通过yield实现数组全排列的方法

    python通过yield实现数组全排列的方法

    这篇文章主要介绍了python通过yield实现数组全排列的方法,实例分析了全排列的概念及yield实现的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • Django的分页器实例(paginator)

    Django的分页器实例(paginator)

    下面小编就为大家分享一篇Django的分页器实例(paginator),具有很好的参考价值,希望对大家有所帮助
    2017-12-12
  • Python使用pandas实现对数据进行特定排序

    Python使用pandas实现对数据进行特定排序

    在数据分析和处理过程中,排序是一项常见而重要的操作,本文将详细介绍如何利用pandas对数据进行特定排序,包括基本排序、多列排序、自定义排序规则等方面的内容,需要的可以了解下
    2024-03-03
  • python实现列表中最大最小值输出的示例

    python实现列表中最大最小值输出的示例

    今天小编就为大家分享一篇python实现列表中最大最小值输出的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python中装饰器学习总结

    Python中装饰器学习总结

    这篇文章主要介绍了Python中装饰器学习总结,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Python正则表达式教程之三:贪婪/非贪婪特性

    Python正则表达式教程之三:贪婪/非贪婪特性

    这篇文章主要介绍了Python正则表达式中贪婪/非贪婪特性的相关资料,文中通过示例代码介绍的很详细,对大家具有一定的参考价值,需要的朋友下面来一起看看吧。
    2017-03-03
  • Python 忽略文件名编码的方法

    Python 忽略文件名编码的方法

    这篇文章主要介绍了Python 忽略文件名编码的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • python读写LMDB文件的方法

    python读写LMDB文件的方法

    这篇文章主要为大家详细介绍了python读写LMDB文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07

最新评论