基本数据结构(字典)

- 字典 dict类

 - 键必须不可变,所以可以用数字,字符串或布尔值或元组充当,而用列表就不行

dict={['name',]:1,'k2':2}
print(dict['name'])     #报错

 - len(dict)   计算字典键的个数

 - list(dict) 键的列表    tuple(dict)键的元祖     str(dict)把整个字典都转化成字符串

 - dict.clear()

dict.clear()    删除字典内全部元素  
没有返回值
dict = {'Name': 'Zara', 'Age': 7}
print(len(dict)) 2
dict.clear()
print(len(dict)) 0

 - dict.copy()

dict.copy()      字典拷贝 浅拷贝
dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
dict2=dict1.copy()
print(dict2) {'Age': 7, 'Name': 'Runoob', 'Class': 'First'}

 - 直接赋值和 copy 的区别

直接赋值和 copy 的区别
dict1 =  {'user':'runoob','num':[1,2,3]}

dict2 = dict1          # 浅拷贝: 引用对象
dict3 = dict1.copy()   # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
# 修改 data 数据
dict1['user']='root'
dict1['num'].remove(1)

# 输出结果
print(dict1)
{'user': 'root', 'num': [2, 3]}
print(dict2)
{'user': 'root', 'num': [2, 3]}
print(dict3)
{'user': 'runoob', 'num': [2, 3]}

 - dict.get()

dict.get(key,default=None)     返回指定键的值,如果值不在字典中返回默认值。    key -- 字典中要查找的键。default -- 如果指定键的值不存在时,返回该默认值值。
返回指定键的值,如果值不在字典中返回默认值 None。       
dict = {'Name': 'Runoob', 'Age': 27}

print ("Age 值为 : %s" %  dict.get('Age'))                  Age 值为 : 27
print ("Sex 值为 : %s" % dict.get('Sex', "NA"))            Sex 值为 : NA

 - key in dict    判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false。

 - dict.keys()    返回一个字典所有的键  

 - dict.values()   返回一个字典所有的值

 - dict.items()    返回一个键值对,如果是一个变量接受返回的就是键

dict = {'Name': 'Runoob', 'Age': 7}
for i,j in dict.items():
    print(i, ":\t", j)

Name :   Runoob
Age :    7

  - dict.formkeys()    创建一个字典  

dict.fromkeys(seq[, value]))   创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值    seq -- 字典键值列表    value -- 可选参数, 设置键序列(seq)的值
seq = ('name', 'age', 'sex')

dict = dict.fromkeys(seq)
print ("新的字典为 : %s" %  str(dict))    {'age': None, 'name': None, 'sex': None}

dict = dict.fromkeys(seq, 10)
print ("新的字典为 : %s" %  str(dict))   {'age': 10, 'name': 10, 'sex': 10}

 - dict.setdefault()    返回指定键的值,如果键不在字典中创建一个键返回默认值  ,并将值设为默认值。

dict.setdefault(key, default=None)   如果键不已经存在于字典中,将会添加键并将值设为默认值。  key -- 查找的键值    default -- 键不存在时,设置的默认键值。
该方法没有任何返回值
dict = {'Name': 'Runoob', 'Age': 7}

print ("Age 键的值为 : %s" %  dict.setdefault('Age', None))
print ("Sex 键的值为 : %s" %  dict.setdefault('Sex', None))
print ("新字典为:", dict)
Age 键的值为 : 7
Sex 键的值为 : None
新字典为: {'Age': 7, 'Name': 'Runoob', 'Sex': None}

 - dict.update(dict2)   把字典dict2的键/值对更新到dict里    若dict中存在与dict2中相同的键,则使用dict2中的键值

dict.update(dict2)    把字典dict2的键/值对更新到dict里   dict2 -- 添加到指定字典dict里的字典。    
该方法没有任何返回值
dict = {'Name': 'Runoob', 'Age': 7}
dict2 = {'Sex': 'female' }

dict.update(dict2)
print ("更新字典 dict : ", dict)
更新字典 dict :  {'Sex': 'female', 'Age': 7, 'Name': 'Runoob'}

 - dict.pop()    把制定的字典中的键删除,返回键对应的值

pop(key[,default])   删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。  key: 要删除的键值   default: 如果没有 key,返回 default 值
返回被删除的值。
site= {'name': '菜鸟教程', 'alexa': 10000, 'url': 'www.runoob.com'}
pop_obj=site.pop('name')
print(pop_obj)
菜鸟教程

 - dict.popitem()   随机删除字典中一个键值对

- 集合  set()    集合内没有重复的元素,每个元素不可变更改,即集合内的元素不能是列表字典集合,但集合可以添加删除更新元素

 - 集合是无序的,即不能使用索引号,取值

 - set()    可以把列表,元祖,字符串,字典(会把字典中的键) 转化成集合,并会去重

 - x.add(a)    把a添加进x集合,若a已经在x集合中存在,则没有操作,a可以是字符串,元祖,布尔值

names = {'龙哥','海角','老狗','成绩','小江','小高'}
names.add('阿龙')
print(names)     {'阿龙', '小江', '海角', '成绩', '小高', '龙哥', '老狗'}

 - x.discard(a)   删除x集合中指点的a值,不存在不报错

 - x.remove(a) 移除x集合中指点的a值,不存在报错

 - x.pop()   随机删除x集合中元素

 - x.update(a)   把a中的元素更新进集合x中,a可以是集合列表元祖

names = {'龙哥','海角','老狗','成绩','小江','小高'}
boys = ('龙哥1','老狗1')
names.update(boys)
print(names)        {'海角', '小江', '龙哥1', '成绩', '小高', '老狗1', '龙哥', '老狗'}

 - b=x.difference(a)   x中存在而a中不存在的集合   x必须是集合,a可以是集合元祖列表字典

names = {'龙哥','海角','老狗','成绩','小江','小高'}
boys = ['小高','海娇','小狗']
val = names.difference(boys) # names中存在,boys中不存在数据
print(val)

 - b=x.symmertric_difference_update(a)      x与a中不相同元素的集合, x必须是集合,a可以是集合元祖列表字典

names = {'龙哥','海角','老狗','成绩','小江','小高'}
boys = ['小高','海娇','小狗']
names.symmetric_difference_update(boys)
print(names)            {'成绩', '海角', '龙哥', '老狗', '小江', '小狗', '海娇'}

 - 交集  b=x.intersection(a)     b与a的交集集合  x必须是集合,a可以是集合元祖列表字典

names = {'龙哥','海角','老狗','成绩','小江','小高'}
boys = {'小高','海娇','小狗'}

val = names.intersection(boys)
print(val)   {'小高'}

 - 并集   b=x.union(a)     b与a的并集集合  x必须是集合,a可以是集合元祖列表字典

names = {'龙哥','海角','老狗','成绩','小江','小高'}
boys = {'小高','海娇','小狗'}

val = names.union(boys)
print(val)         {'海娇', '小狗', '小高', '龙哥', '老狗', '小江', '海角', '成绩'}

 - 是否无交集     b=x.isdisjoint(a)     b与a是否无交集  x必须是集合,a可以是集合元祖列表字典  有交集:False    无交集:True

names = {'龙哥','海角','老狗','成绩','小江','小高'}
boys = {'海娇','小狗'}
val = names.isdisjoint(boys)
print(val)      True

 - 是否是子集   b=x.issubset(a)    x是否是a的子集  是:True   否:False  x必须是集合,a可以是集合元祖列表字典

 - 是否是父集   b=x.issuperset(a)   x是否是a的父集  是:True   否:False  x必须是集合,a可以是集合元祖列表字典

names = {'龙哥','海角','老狗','成绩','小江','小高'}
boys = {'龙哥','老狗'}
# 是否是子集
val = boys.issubset(names)       
print(val)                                        True
# 是否是父集
val = names.issuperset(boys)
print(val)                                   True

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

posted @ 2017-08-24 23:46  JAYWX  阅读(226)  评论(0编辑  收藏  举报