Python--Dict
字典:值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
dict = {}
dict['one'] = "测了个试1"
dict[2] = "测了个试2"
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
print (dict['one']) # 输出键为 'one' 的值
print (dict[2]) # 输出键为 2 的值
print (tinydict) # 输出完整的字典
print (tinydict.keys()) # 输出所有键 p
rint (tinydict.values()) # 输出所有值
创建字典
dict1=dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
print(dict1) #{'Taobao': 3, 'Runoob': 1, 'Google': 2}
dict2={x: x**2 for x in (2, 4, 6)}
print(dict2) #{2: 4, 4: 16, 6: 36}
dict3=dict(Runoob=1, Google=2, Taobao=3)
print(dict3) #{'Runoob': 1, 'Google': 2, 'Taobao': 3}
len(dict)计算字典元素个数,即键的总数。
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
len(dict) #3
str(dict)转化为字符串表示。
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
s=str(dict) p
rint(s) #"{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"
dict.get(key, default=None)函数返回指定键的值
dict = {'Name': 'Runoob', 'Age': 27}
print (dict.get('Age')) #27
print (dict.get('Sex', "NA")) #NA
dict.keys()方法返回一个可迭代对象,可以使用 list() 来转换为列表,列表为字典中的所有键。
dict = {'Name': 'Runoob', 'Age': 7}
lst=list(dict.keys()) # 转换为列表
print(lst) #['Name', 'Age']
dict.values()方法返回一个迭代器,可以使用 list() 来转换为列表,列表为字典中的所有值。
dict = {'Sex': 'female', 'Age': 7, 'Name': 'Zara'}
lst=list(dict.values()) # 转换为列表
print (lst) #['female', 7, 'Zara']
dict.items()法以列表返回可遍历的(键, 值) 元组数组。
dict1 = {'Name': 'Runoob', 'Age': 7}
lst=dict1.items()
print (lst) #dict_items([('Age', 7), ('Name', 'Runoob')])
dict.fromkeys(seq[, value])函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。
seq = ('name', 'age', 'sex')
dict1 = dict.fromkeys(seq)
dict2 = dict.fromkeys(seq, 10)
print (dict1) #{'age': None, 'name': None, 'sex': None}
print (dict2) #{'age': 10, 'name': 10, 'sex': 10}
dict.popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。
dict1= {'name': '测了个试', 'alexa': 10000, 'url': 'www.runoob.com'}
pop_obj=dict1.popitem()
print(pop_obj) # ('url', 'www.runoob.com')
pop(key[,default])方法删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
dict1= {'name': '测了个试', 'alexa': 10000, 'url': 'www.runoob.com'}
pop_obj=dict1.pop('name')
print(pop_obj) #测了个试
dict.update(dict2) 函数把字典参数 dict2 的 key/value(键/值) 对添加到字典 dict 里。有重复则覆盖重负的键值对
慎用!!! 个人发现update方法可能存在bug: 1.碰到":"会自作聪明加空格 2.碰到字符串中的空格会自作聪明去除空格
dict1 = {'Name': 'Runoob', 'Age': 7}
dict2 = {'Sex': 'female' }
dict1.update(dict2)
print (dict1) # {'Name': 'Runoob', 'Age': 7, 'Sex': 'female'}
dict.copy()函数返回一个字典的浅复制。
dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
dict2 = dict1.copy()
print (dict2) #{'Age': 7, 'Name': 'Runoob', 'Class': 'First'}
dict.clear()函数用于删除字典内所有元素。
dict1 = {'Name': 'Zara', 'Age': 7}
dict1.clear()
print (dict1) #{}
dict的交集,并集。(需要先转化为set,再处理)
方式1.使用“&”运算符
a = { 'x' : 1, 'y' : 2, 'z' : 3 }
b = { 'u' : 1, 'v' : 2, 'w' : 3, 'x' : 1, 'y': 2 }
set( a.keys() ) & set( b.keys() ) # set(['y', 'x'])
set( a.items() ) & set( b.items() ) # set([('y', 2), ('x', 1)])
方式2.调用set的方法
a = { 'x' : 1, 'y' : 2, 'z' : 3 }
b = { 'u' : 1, 'v' : 2, 'w' : 3, 'x' : 1, 'y': 2 }
setA = set( a )
setB = set( b )
setA.intersection( setB ) # set(['y', 'x'])
dict中是否有某键
d = {'Name':'coco','Sex':'Female'}
print('Name' in d.keys()) # True
print('Name' in d) # True
print (d.__contains__('Name')) # True
对象中是否有某键
print (hasattr(d, 'Name') # True