字典和集合

字典 

字典没有索引和切片,但是字典可嵌套

字典可以直接强转为字符出类型

 

for  k,v in dic.items()  #获取到字典中的所有键值对,解构给前面俩变量
    print(k,v)

for i in dic.values():
         print(i)     #获取到字典中的每一个值

for i in dic:
         print(i)     #获取到字典中的每一个键

for i in dic.keys():
         print(i)      #获取到字典中的每一个键

 

 

 

 

dic = {1:"今天",2:"你",3:"好美"}
dic = str(dic)
print(dic)
print(type(dic))#这样改过之后,你就能把字典写进文件里

 

 

 

循环字典的过程中进行添加键值对,会报错

增:

1.新key表示添加

dic = {"意大利": "李云龙", "美国": "美国往事"}
dic["日本"] = "东京审判" 
dic["韩国"] = "釜山行"

 

2.setdefault(key,value)   指定键、值添加

dic = {"意大利": "李云龙", "美国": "美国往事"}
dic.setdefault("hello","我爱你中国")        #key不重复,添加成功,返回value    
print(dic.setdefault("意大利","真棒"))   #由于字典里这个有同样的key,返回值就是字典里的key现有value

 

删:

1.pop(键)     指定元素删除

dic = {"意大利": "李云龙", "美国": "美国往事"}
dic.pop("美国")
print(dic)
输出结果:{'意大利': '李云龙'}

 

2.popitem()     随机删除

dic = {"意大利": "李云龙", "美国": "美国往事"}
dic.popitem()

3.del dic[key]

4.clear()  #清空

改:

字典value是否可以添加,要看它的类型,如果是可变类型,就能添加,如果不是,就不能添加 

1.老key = 值

# dic = {"河南":"胡辣汤", "开封": "灌汤包", "武汉":"热干面"}
# # dic['河南'] = "烩面" # 老key = 值
# print(dic)

 2.dic.update(d)  #把d更新到dic中

查:

1.dic[key]   #如果key不存在就会报错

dic1 = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"}
print(dic1["赵四四"])        #KeyError:"'赵四四' key不存在

 2.get()  有2个参数,如果只给一个,当key不存在时就返回空

dic1 = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"}
# print(dic1.get("刘能能"))  # None 当key不存在返回None
# print(dic1.get("刘能能", "没有这个人")) # 当key不存在. 返回第二个参数. 默认第二个参数是None

3.setdefault()  能查也能添加,如果字典里没有这个键值对,就添加,如果有这个键,就返回此键的值

dic = {"意大利": "李云龙", "美国": "美国往事"}
dic.setdefault("hello","我爱你中国")        #key不重复,添加成功,返回value    
print(dic.setdefault("意大利","真棒"))   #由于字典里这个有同样的key,返回值就是字典里的key现有value

字典的其他操作

update()    #覆盖

# dic1 = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"}
# dic2 = {"赵四":"宝宝", "刘能":"萌萌", "皮校长":"皮长山"}
dic1.update(dic2)    #把dic2中的内容更新到dic1中
print(dic1)
print(dic2)

===========================================================================================

集合(set)  

没有索引和切片!

集合是可变的数据类型,但是它要求里面的元素不可以是可变类型

# 集合本身是可变的数据类型 . 不可哈希
# 集合套集合->不能互相嵌套的
# 集合中的元素必须可哈希(不可变的)

添加

add

thisset.add("Facebook")
s.update( x ) # 参数可以是列表,元组,字典等 

 

 

 

 

*****集合可以去重复

lst = ["麻将", "牌九", "骰子", "扑克", "老虎", "骰子", "扑克", "老虎", "扑克", "老虎", "扑克", "老虎"]
s = set(lst)  #把列表转化成字典,去重复
print(s)  
lst = list(s)  #再把去重的字典转换成列表
print(lst)

 

增:

1. set.add()      #添加到集合

2. update()    #迭代添加

 

删:

1. set.pop()    #随机删除一个

2. remove(元素) #指定元素删除  ,无返回值,直接把原内容上改掉了,不许要再接收

3.clean()  #清除集合

改:

先删后添就是改

集合的其他操作

交集  #就是查找重复

1.& #与字符

2.intersection()

s1 = {"门神", "灯神", "灯神你在笑什么?"}
s2 = {"门神", "灯神", "你俩在干什么?"}
print(s1 & s2)
print(s1.intersection(s2))

并集:  #就是合到一起

s1 = {"门神", "灯神", "灯神你在笑什么?"}
s2 = {"门神", "灯神", "你俩在干什么?"}
print(s1 | s2)
print(s1.union(s2))

 

差集

1. set.difference(set1)   #查看set跟set1的不同

# s1 = {"门神", "灯神", "灯神你在笑什么?"}
# s2 = {"门神", "灯神", "你俩在干什么?"}
# print(s1 - s2) # s1中特有的内容
# print(s1.difference(s2))

 

反差集:  #就是两个集合中特有的内容

1. ^ 

2.symmetric_difference()

# s1 = {"门神", "灯神", "灯神你在笑什么?"}
# s2 = {"门神", "灯神", "你俩在干什么?"}
# print(s1 ^ s2) # 两个集合中特有的内容
# print(s1.symmetric_difference(s2))

 

集合套集合

1. frozenset()

# s = frozenset({"哈哈","呵呵"}) # 不可变的数据类型(集合)
# for el in s:
#     print(el)

------------------------------------------------------------------------------------------------------------------------------

random.randint(a,b)   #返回范围[a, b]中的随机整数,包括两个端点。

 

posted @ 2018-12-04 21:28  Tank-Li  阅读(253)  评论(0编辑  收藏  举报