python 字典 元组 集合

字典

dict1 = {'name':'kobe','age':40,'list':[1,2,3,4]}

无序的,key必须为不可变类型

dic = {'name':'kobe','age':40,'height':196}

dic['position'] = 'full back'            #有则覆盖更改,无则增加

dic.setdefault('position','full back')      #有则不改,无则增加

dic.pop('height')      #根据key 删除,返回删除的值

dic.pop('height1','没有删除的键,自定义返回值')    #pop 删除时如果没有删除的键会报错,所以要自定义返回值

dic.clear()          #清空字典内容

del dic            #内存级别全部删除

del dic['name']       #删除指定键值对

dic.popitem()        #随机删除,并以元祖的形式返回删除的键值对

dic['name'] = 'wade'    #事先存在则更改,否则添加

dic1.update(dic2)      #把dic2中的键值对全部添加到dic1中,如果有相同的键则更新

dict.setdefault(key, default=None)  #如果键不存在于字典中,将会添加键并将值设为默认值,如果键存在那么不执行,default不设置那么值就是none
 

dic['name']          #指定键来查询,若无则报错

dic.get('name1','自定义')  #若无查询key,默认返回None,也可以自定义返回值

dic.keys()          #所有字典的键,以([...])形式显示,可以转换成列表,也可以for循环
  dict_keys(['name', 'age', 'height'])
  list(dic.keys())
dic.values()         #所有字典的值,以[(...)]形式显示,可以转换成列表,也可以for循环   dict_values(['kobe', 40, 196]) dic.items()          #所有键值对以元祖形式存放在[()]中,可以转换成列表,也可以k,v 形式for 循环   dict_items([('name', 'kobe'), ('age', 40), ('height', 196)])   for k,v in dic.items:     print(k,v)

 

其他方法

len(dic)              #统计键值对二个数

dic.fromkeys('asd','test')    #迭代asd来创建字典
  {'a': 'test', 's': 'test', 'd': 'test'}

dic.fromkeys('asd',[])      #创建空列表为相同内存地址,任何一个列表中添加值都是一起添加
   {'a': [], 's': [], 'd': [], 'f': []}

 

元祖

tu1 = (1,2,[1,'test'],True)

不可变数据类型(子类不可变,孙类可变)

常见使用方法

索引

切片

count

len

index  

集合

set1 = {1,2,True,(1,2,3,)}

无序不可重复的,里面的元素必需是可哈希(不可变)的,但是其本身是可变的。

应用

去重

list1 = [1,2,3,1,3,4,5,6,2]

set1 = set(list1)

关系测试

set.add('666')

set.update('asdf')    #迭代增加,asdf分为四个单个元素迭代增加到集合中

set.pop()           #随机删除

set.remove(1)            #指定元素删除

set.clear()         #清空

del set             #删除整个集合

 

交集

set1 = {1,2,3,4,5,6}

set2 = {4,5,6,7,8,9}

set11 = set1 & set2

print(set11)

    {4, 5, 6}

并集

set11 = set1 | set2    #自动去重

print(set11)

    {1, 2, 3, 4, 5, 6, 7, 8, 9}    

差集

set11 = set1 - set2

print(set11)
    
    {1, 2, 3}

 反交集

set11 = set1 ^ set2

print(set11)

    {2, 3, 4, 5, 6}

子集

判断一个集合完全包含另一个集合

print(set1 < set2)
  False
或

print(set1.issubset(set2))

超子集

print (set1 > set2)
    False
或
print(set1.superset(set2))
    False

frozenset 把集合变为不可变类型
set3 = frozenset(set1)

posted @ 2019-05-06 13:14  fanggege  阅读(248)  评论(0编辑  收藏  举报