字典
字典是一种key-value(键值对)的数据类型,通过索引找到相应的值。与列表不同,列表是通过位置,在字典的索引是通过key查找。下面用{}
声明一个字典food,字典内的元素通过,
隔开。每一个元素通过:
分割key-value。:
前面的是key,:
后面的是value
food = {
"one": "cafe",
"two": "apple",
"three": "orange"
}
获取字典的值,通过key的名称来获取,注意:必须确保字典里存在key,才能通过这样取值,否则会报错。
print (food["one"])
在不确定是否存在key值时,可以通过下面的方法获取。如果不存在会返回None
print (food.get("one"))
如果想要知道字典中是否存在key的方法
print ("one" in food) # 不存在返回false
修改字典的值,也是通过key的名称来修改。如果key存在字典中,则会修改相应的值,如果key不存在,那么将会新增一个元素
food["one"] = "Apple"
food["four"] = "pear"
查看字典中所有的key
print(food.keys())
查看字典中所有的value
print(food.values())
初始化一个字典,并且设置初始值
print(dict.fromkeys([1,2,3],"test"))
# {1: 'test', 2: 'test', 3: 'test'}
合并两个字典,food和food_ex合并,如果存在相同的key,更新为food_ex的value,如果不存在,则添加
food_ex = {
"five": "coffee",
"six": "pear",
"three": "orange_ex"
}
food.update(food_ex)
print(food)
#{'two': 'Apple', 'three': 'orange_ex', 'six': 'pear', 'five': 'coffee', 'one': 'cafe'}
# three 被修改,five six 添加
字典循环有两种方法
第一种
for key in food: print(key, food[key])
第二种
for k,v in food.items(): print(k,v)
建议使用第一种方法,是直接对字典进行操作。而第二种方法将字典转换成列表,如果数据量非常大的时候,转换时间特别长。
字典特性
通过上面一些常用的方法,我们可以发现,字典的两个特性
- 无序的
- key是唯一的
集合
集合的声明可以通过列表进行转换,也可以同过set
关键字去声明
word = ("one","one","two","three","two")
word = set(word) # 第一种列表转换
print(word,type(word))
# {'three', 'two', 'one'} <class 'set'>
word2 = set(["one","four","two"]) # 第二种set声明
集合一些常用的运算:包括交集,差集,并集等
交集是求出两个集合中,共同的元素
差集是求出集合A中,除掉集合B中共同的元素之后剩下集合A的元素
并集是求出两个集合合并之后的更大集合
print(word.intersection(word2)) # 交集
# 符号表示 word & word2 求交集
# {'one', 'two'}
print(word.difference(word2)) # 差集
# 符号表示 word - word2 求差集
# {'three'}
print(word.union(word2)) # 并集
# 符号表示 word | word2 求并集
# {'three', 'four', 'one', 'two'}
子集及父集判断
word2 = set(["one","four","two"])
word3 = set(["one","two"])
print(word3.issubset(word2)) # word3是不是word2的子集
# True
print(word3.issuperset(word2)) # word3是不是word2的父集合
# False
反向差集,是先求出两个集合的并集A和交集B,再求出A和B的差集
print(word2.symmetric_difference(word3))
判断两个集合交集为空,返回ture
print(word2.isdisjoint(word))
集合操作
word.add("five") # 添加
word.update(["six", "seven"]) # 批量添加
word.remove("five") # 元素不存在会报错
word.pop() # 删除任意一个元素,并返回
word.discard("five1") # 删除指定元素,如果有删除,没有 不操作
集合特性
- 去重,列表转成集合,自动去重
- 关系测试,包括两组集合的交集,差集,并集等关系