python的集合与字典

集合

type=set
a = {‘q’, ‘w’, ‘e’, ‘q’, ‘r’}

  1. 集合是一个无序不重复元素的集
  2. 基本功能包括关系测试(‘e’ in a ->True)和消除重复元素(a->{‘q’, ‘w’, ‘e’, ‘r’})
  3. 集合对象支持 union(联合),intersection(交),difference(差)和 symmetric difference(对称差集)等数学运算
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  # a 去重后的字母
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # a 有而 b 没有的字母
{'r', 'd', 'b'}
>>> a | b                              # 存在于 a 或 b 的字母
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # a 和 b 都有的字母
{'a', 'c'}
>>> a ^ b                              # 存在于 a 或 b 但不同时存在的字母
{'r', 'd', 'b', 'm', 'z', 'l'}
  1. 大括号或 set() 函数可以用来创建集合。注意:想要创建空集合,你必须使用 set() 而不是 {}。后者用于创建空字典
  2. 集合和字典基本相同,唯一的区别,就是集合没有键和值的配对,是一系列无序的、唯一的元素组合
  3. 集合并不支持索引操作,因为集合本质上是一个哈希表,和列表不一样
  4. 添加元素 a.add(‘t’)
  5. 弹出元素 a.pop() 随机弹出一个元素

字典

data = {‘a’: 1, ‘b’: ‘2’}

  1. 字典是键值对(key:value)集合(v3.6前是无序的,3.7+定义为有序)
  2. 同一个字典内的键必须是互不相同的
  3. 一对大括号 {} 创建一个空字典。初始化字典时,在大括号内放置一组逗号分隔的键:值对,这也是字典输出的方式
  4. 取key的值:data.keys() 取value的值:data.get(‘a’)->1 data[‘a’]->1
  5. 加入值对:dict[‘key’]=‘value’
  6. 删除值对:del data[‘key’]
  7. 键是否存在 ‘b’ in data ->True
  8. d = {‘b’: 1, ‘a’: 2, ‘c’: 10} , d.items()遍历字典
    根据字典的升序排序 d_sorted_by_key = sorted(d.items(), key=lambda x: x[0])
    根据字典的升序排序 d_sorted_by_value = sorted(d.items(), key=lambda x: x[1])
  9. 同时遍历两个序列,用zip()函数
>>> a = ['Pradeepto', 'Kushal']
>>> b = ['OpenSUSE', 'Fedora']
>>> for x, y in zip(a, b):
...     print("{} uses {}".format(x, y))
...
Pradeepto uses OpenSUSE
Kushal uses Fedora
  1. 字典中的键必须是不可变类型,比如你不能使用列表作为键。
  2. dict() 可以从包含键值对的元组中创建字典
    dict((‘e’, 5), (‘f’, 6)) -> {‘e’: 5, ‘f’: 6}
  3. 相比于列表和元组,字典的性能更优,特别是对于查找、添加和删除操作,字典都能在常数时间复杂度内完成
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaobai178

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值