Python基础---Task06:字典和集合

dict字典

dictionary = {key : value,…}
key 和 value 可重复

创建和搜索字典键值

1.创建

# 创建单键映射单值dict
dict1 = dict(Alibaba ='Taobao', Baidu ='BaiduMap', Tengxun ='QQ') #dict格式:{'key':content,...}

# 创建单键映射多值dict
from collections import defaultdict
dict2 = defaultdict(list) #创建元素是list的dict
dict2['language'].append('C++') # 为单键添加多映射
dict2['language'].append('python')

print(dict2)
>> defaultdict(<class 'list'>, {'language': ['C++', 'python']})

  • 注意:用dict(keyname = value )创建dict时,keyname不能加引号

2.搜索

print('T' in dict2) #查找'T'是否在dict2

print(dict2.keys(),' ',dict2.values(),' ',dict2.items())
# 返回dict2所有key, dict2所有value, dict2所有(key,value)

print(dict1.get('W','no key'))
#dict.get(key,'没找到key时返回的语句')---有key返回value, 没有返回None和'xxx'

比较和运算

dict2 = {'Alibaba':1999,'Baid':2000,'Tengxun':1998,'Wangyi':1997,'Jingdong':1998}
dict1.keys() & dict2.keys() # 返回keys交集
>> Out[19]: {'Alibaba', 'Tengxun'}

dict1.keys() - dict2.keys() # 返回keys差集
## 同理.items(), 不能用于.values()
>> Out[20]: {'Baidu'}

# 代数运算默认作用于key
print(min(dict2))
>> Alibaba

min(dict2, key=lambda k : dict2[k]) # 返回最小value对应的key
>> Out[24]: 'Wangyi'
# 当多个实体拥有相同的值的时候,拥有最小或最大键的实体会返回

  • ** 注意:代数运算默认作用于key

排序

rows = [
    {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003},
    {'fname': 'David', 'lname': 'Beazley', 'uid': 1002},
    {'fname': 'John', 'lname': 'Cleese', 'uid': 1001},
    {'fname': 'Big', 'lname': 'Jones', 'uid': 1004}
]

from operator import itemgetter # 用itemgetter模块
# 单键或多键排序
rows_by_fname = sorted(rows, key=itemgetter('fname'))
# 以fname为准,排序rows
print(rows_by_fname)

rows_by_name = sorted(rows, key=itemgetter('lname','fname'))
# 以fname & lname 为准,排序rows
print(rows_by_name) # 原理???

max(rows, key=itemgetter('uid')) # 返回uid最大对应的key

set集合

集合中不存才重复元素,理论上集合大小不可变,但可以用

创建

set = set()
用help(set)查看你函数功能

s1 = set([1,2,3])   #s1,s2 是变量,它的值可以通过赋值更改;但set()是不变量,不能通过赋值改变元素值或者个数
s2 = set([2,3,4])
print(s1,s2)
>> {1, 2, 3} {2, 3, 4, 6}


s1.add(4)      #set()只能有一个元素,不能改变元素,可用list伪增删改
print(s1)      # {1, 2, 3, 4}
print(s1 & s2) # 取交集
>> {2, 3, 4}
print(s1 | s2)   # 取并集
>> {1, 2, 3, 4, 6}

参考文献:

python3cookbook:
https://python3-cookbook.readthedocs.io/zh_CN/latest/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值