系统运维

Python字典详解-超级完整版

时间:2010-12-5 17:23:32  作者:应用开发   来源:人工智能  查看:  评论:0
内容摘要:一、字典概述1. 字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号 : 分割,每个对之间用逗号,

一、字典字典概述

1. 字典的详解格式

Python字典是一种可变容器模型,且可存储任意类型对象,超级如字符串、完整数字、字典元组等其他容器模型。详解

字典的超级每个键值key=>value对用冒号 : 分割,每个对之间用逗号,完整分割,整个字典包括在花括号{ }中 ,字典格式如下所示:

d = { key1 : value1, key2 : value2 } 

2. 字典的创建

有多种方法可以创建字典,以下几种方法创建的详解字典均等于 { "one": 1, "two": 2, "three": 3}

a = dict(one=1, two=2, three=3) b = { one: 1, two: 2, three: 3} c = dict(zip([one, two, three], [1, 2, 3])) d = dict([(two, 2), (one, 1), (three, 3)]) e = dict({ three: 3, one: 1, two: 2}) f = dict({ one: 1, three: 3}, two=2) a == b == c == d == e == f 

3. 字典键的特性

字典值可以没有限制地取任何python对象,既可以是超级标准的对象,也可以是完整用户定义的,但键不行,字典有特殊的详解要求,两个重要的超级点需要记住:

唯一性:不允许同一个键出现两次,创建时如果同一个键被赋值两次,后一个值会被记住。亿华云 不可变:键必须不可变,所以可以用数字,字符串或元组充当,所以用列表、字典等就不行。

二、字典的11个方法

print(dir(dict)) [clear, copy, fromkeys, get, items, keys,  pop, popitem, setdefault, update, values] 

1. fromkeys()

描述:创建一个新字典,以序列seq 中元素做字典的键,value为字典所有键对应的初始值。

语法:dict.fromkeys(seq[, value])

参数:

seq 一个序列,作为字典键值列表。

value 可选参数, 设置键序列(seq)的值。

fromkeys是创造一个新的字典。就是事先造好一个空字典和一个列表,fromkeys会接收两个参数,第一个参数为从外部传入的可迭代对象,会将循环取出元素作为字典的key值,另外一个参数是字典的源码下载value值,不写所有的key值所对应的value值均为None,写了则为默认的值

#快速生成字典 seq = (Google, Baidu, Taobao) dict.fromkeys(seq) { Google: None, Baidu: None, Taobao: None} dict.fromkeys(seq, 1) { Google: 1, Baidu: 1, Taobao: 1} dict.fromkeys(range(5), 88) { 0: 88, 1: 88, 2: 88, 3: 88, 4: 88 s = [1,2,3] dict.fromkeys(seq,s) { Google: [1, 2, 3], Baidu: [1, 2, 3], Taobao: [1, 2, 3 

2. clear()

描述:清除字典中所有的元素,得到的是空的字典。返回值None

语法:dict.clear()

参数:NA

dic = { "python3":123} print(dic.clear()) None def main():     my_dict = { 子: 鼠, 丑: 牛, 寅: 虎, 卯: 兔,                辰: 龙, 巳: 蛇, 午: 马, 未: 羊,                申: 猴, 酉: 鸡, 戌: 狗, 亥: 猪}     print(子 in my_dict.keys())     print(鼠 in my_dict.values())     print(小伍哥 in my_dict.keys())     print(小伍哥 in my_dict.values())     print ("字典长度 : %d" %  len(my_dict))     # 清空字典的指定用法     my_dict.clear()     print(my_dict)     print ("字典删除后长度 : %d" % len(my_dict)) if __name__ == __main__:     main() #运行结果     True True False False 字典长度 : 12 { } 字典删除后长度 : 0 

3. copy()

描述:返回一个字典浅拷贝的副本

语法:dict.copy()

参数:无

dict1 = { Name: Xiaowuge, Age: 17}; dict2 = dict1.copy() str(dict2) "{ Name: Xiaowuge, Age: 17}" dict_0  = { name:xiaowuge,age:18,proerty:shuai} dict_0 { name: xiaowuge, age: 18, proerty: shuai} dict_1 = dict_0.copy() dict_1 { name: xiaowuge, age: 18, proerty: shuai} dict_0.update({ age:28}) dict_0 { name: xiaowuge, age: 28, proerty: shuai} dict_1  { name: xiaowuge, age: 18, proerty: shuai 

注意:python字典的复制、浅拷贝和深拷贝的区别

复 制:跟原字典完全一样

浅拷贝:将原字典拷贝一份,但是没有拷贝原字典中的子对象,所以当原字典中的子对象发生变化时,浅拷贝后的字典也会发生变化

深拷贝:将原字典连同其子对象一块进行了拷贝,所以深拷贝后的字典不会随着原字典的变化而改变

代码示例:

import sys import copy def main():     d0 = { 1:"a", 2:"b", 3:"c", 4:[1,2,3]}     d1 = d0     d2 = d0.copy()     d3 = copy.deepcopy(d0)     print ("d0:", d0)     print ("d1:", d1)     print ("d2:", d2)     print ("d3:", d3)     print ("*"*10, "原字典d0改变后")     d0[1] = "aa"     d0[4].append(4)      print ("d0:",id(d0),d0)     print ("d1:",id(d1),d1)     print ("d2:",id(d2),d2)     print ("d3:",id(d3),d3) if __name__ == "__main__":     main()       d0: { 1: a, 2: b, 3: c, 4: [1, 2, 3]} d1: { 1: a, 2: b, 3: c, 4: [1, 2, 3]} d2: { 1: a, 2: b, 3: c, 4: [1, 2, 3]} d3: { 1: a, 2: b, 3: c, 4: [1, 2, 3]} 
copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap