Python基础入门—字典dict

字典

  • 字典是一种可变数据类型
  • 点典的元素存储方式是键值对的形式,键值对之间用逗号隔开
  • 键值对的形式形如:key:value
  • 最外层用{}括起来
  • d = {key1 : value1, key2 : value2 }
  • 因为字典是键值对的形式,因此字典是无序的,天然不能切片和索引,而是经过键来取值

键:通常是惟一的,若是重复最后的一个键值对会替换前面的,值不须要惟一
值:能够取任何数据类型,但键必须是不可变的,如字符串,数字或元组python

字典的定义

  1. dict()来建立
a = dict([('a',1),('b',2),('c',3)])
a 
type(a)

{'a':1,'b':2,'c':3}
dict
  1. 直接赋值{}
b = {'a':1,'b':2,'c':3}
b
type(b)

{'a':1,'b':2,'c':3}
dict

字典对象增长元素

  1. dict[键名] = 值
c = {'a':1,'b':2,'c':3}
c['e'] = 4
e

{'a':1,'b':2,'c':3,'e':4}
  1. dict.setdefault(’新键名‘,值)
d = {'a':1,'b':2,'c':3}
d.setdefault('e',4)
d

{'a':1,'b':2,'c':3,'e':4}
  1. dict1.update(dict2)
    相似列表extend()

字典对象元素删除

经常使用的5种方法code

del 字典名['键名'] 删除指定键值
字典名.pop('键名') 删除键值+弹出值
字典名.popitem() 随机删除一对(通常最后一对)+弹出
字典名.clear() 删除词典内全部元素(和列表对应操做相同)
del 字典名 删除整个词典(和列表对应操做相同)

Examples:htm

scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
scores.clear()
scores 

{}
scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
del scores['Mike']
scores

{'Tom': 89, 'Mary': 95, 'Jack': 95}

字典对象的修改

字典名[键] = 新值对象

字典对象元素的查找

字典名['键名'] 返回改键所对应的值
字典名.get('键名') 返回改键所对应的值
字典名.keys() 返回包含全部键的列表
字典名.values() 返回包含全部值的列表
字典名.items() 返回全部包含键值对的列表

Examples:blog

scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
scores.get('Mary')

95
scores={"Mike":88,"Tom":89,"Mary":95,"Jack":95}
scores.items()

dict_items([("Mike":88),("Tom":89),("Mary":95),("Jack":95)])

字典的深浅拷贝

  1. 浅拷贝
    两个字典的内存地址不一样,但内部元素指向同一内容空间

Examples:索引

a = {'a':1, 'b':(1, 2), 'c':[1, 2, 3], 'd':(1, 2, {1:1}), 'e':{1, 2, 3}}
b = copy(a)
id(a)
id(b)

82254800
82254224 # 不一样电脑运行结果不一样,但a,b两个字典的id不一样

[id(x) for x in a]
[id(x) for x in b]
[30713928, 30712248, 30378392, 30622024, 30621968]
[30713928, 30712248, 30378392, 30622024, 30621968]  
# 内部的item的id 是同样的  说明内部的元素指向同一个值
  1. 深拷贝内存

    Examples:字符串

    from copy import deepcopy
    c = deepcopy(a)
    id(a)
    id(c)
    
    82254800
    82201408 # 不一样电脑运行结果不一样,但a,c两个字典的id不一样
    
    [id(a[x]) for x in a] 
    [id(c[x]) for x in c]
    [8791153438464, 77829320, 79350664, 79322712, 79516840]
    [8791153438464, 77829320, 82216968, 82251848, 79517288]
    # 内部的item的id 是同样的  说明内部的元素指向同一个值

    结果发现可变类型的id发生了变化,具体总结可参考Python基础入门—列表list相关内容get

相关文章
相关标签/搜索