Python 从入门到跑路 【四】字典及集合常用功能


字典

字典是一种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")  # 删除指定元素,如果有删除,没有 不操作

集合特性

  • 去重,列表转成集合,自动去重
  • 关系测试,包括两组集合的交集,差集,并集等关系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值