python字典和集合

字典

特点

  • 字典是无序的
  • 字典的key是唯一的

字典的格式

info = {
    'stu1101' : "TengLan Wu",
    'stu1102' : "LongZe LuoLa",
    'stu1103' : "XiaoZe Maliya",
}

当然也可以多层嵌套:

av_catalog = {
    "欧美":{
        "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
        "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
        "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
        "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
    },
    "日韩":{
        "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
    },
    "大陆":{
        "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
    }
}

av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来"
print(av_catalog["大陆"]["1024"])
#ouput 
['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']

字典之增加

>>> info["stu1104"] = "苍井空"
>>> info
{'stu1102': 'LongZe Luola', 'stu1104': '苍井空', 'stu1103': 'XiaoZe Maliya', 'stu1101': 'TengLan Wu'}

字典之修改

前提是在原有的key值上修改:

>>> info['stu1101'] = "武藤兰"
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': '武藤兰'}

字典之删除

pop

#删除的同时将值取回
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': '武藤兰'}
>>> ret=info.pop("stu1101") #标准删除姿势
ret='武藤兰'

del

#根据key值直接删除
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
>>> del info['stu1103'] #换个姿势删除

popitem

>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} #随机删除
>>>ret= info.popitem()
print(ret)
###('stu1102', 'LongZe Luola')

字典之查找

>>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
>>> 
>>> "stu1102" in info #标准用法
True
>>> info.get("stu1102",'')  #获取,如果没有默认为''
'LongZe Luola'
>>> info["stu1102"] #同上,但是看下面
'LongZe Luola'
>>> info["stu1105"]  #如果一个key不存在,就报错,get不会,不存在只返回None
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'stu1105'

其他操作

keys() 获取字典所有key值

#keys
>>>dict_keys= info.keys()
dict_keys--->(['stu1102', 'stu1103'])
for key in dict_keys:
    print(key)

values()获取字典所有的值

#values
>>> info.values()
dict_values(['LongZe Luola', 'XiaoZe Maliya'])

items() 将key和values放在元组中

#items
info.items()
dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Alex')])

for key,values in info.items():
    print(key,values)

update 将两个字典合并

  • A字典updateB字典,A.update(B) 如果key重复,那么值以B字典的为准
#update 
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
>>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}
>>> info.update(b)
>>> info
{'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}

setdefault 设置值,如果有对应的key值则设置失败

>>> info.setdefault("stu1106","Alex")
'Alex'
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
>>> info.setdefault("stu1102","龙泽萝拉")
'LongZe Luola'
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}

 

集合

集合是一个无序的,不重复的数据组合,它的主要作用如下:

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系

创建一个结合

s=set([1,2,3,4,5,6,7])
t=set([5,7,8,9,10])

集合增删改查

基本操作:  
t.add('x')            # 添加一项  
  
s.update([10,37,42])  # 在s中添加多项  
  
使用remove()可以删除一项:  
t.remove('H') 
t.discard(1)    #删除元素,不存在该元素不会报错,如果是remove则报错
len(s) set 的长度 x in s 测试 x 是否是 s 的成员 x not in s 测试 x 是否不是 s 的成员 

集合的特性

交集

s=set([1,2,3,4,5,6,7])
t=set([5,7,8,9,10])
ret= s&t
#ret=s.intersection(t)
print(ret)
#{5, 7}

并集

s=set([1,2,3,4,5,6,7])
t=set([5,7,8,9,10])
#并集
print(s.union(t))
print(s | t)
#{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

差集

s=set([1,2,3,4,5,6,7])
t=set([5,7,8,9,10])
print(s.difference(t))  #s里面有的t里面没有的元素
print(t.difference(s))
print(s - t)
# {1, 2, 3, 4, 6}
# {8, 9, 10}
# {1, 2, 3, 4, 6}

 

对称差集

s=set([1,2,3,4,5,6,7])
t=set([5,7,8,9,10])
#对称差集
print(s.symmetric_difference(t))  #两个并集减去交集
print(s ^ t)
#{1, 2, 3, 4, 6, 8, 9, 10}

判断父子集

s=set([1,2,3,4,5,6,7])
t=set([1,2,3])
#子集
print(t.issubset(s)) #t是s的子集,返回true

print(s.issuperset(t)) #s是t的父集,返回true
posted @ 2018-08-14 15:33  R00M  阅读(197)  评论(0编辑  收藏  举报