python的高级用法(二)

这是一个系列的文章,会陆陆续续更新,并且这系列的文章会以TODO来注释(因为他放在pycharm里面是黄色的!!!),每一个TODO都代表着一个用法

1、排序字典的使用

# -*- coding: utf-8 -*-
from collections import OrderedDict
import json

# TODO  在迭代操作的时候它会保持元素被插入时的顺序
#  一个 OrderedDict 的大小是一个普通字典的两倍
#  因为它内部维护着另外一个根据键插入顺序排序的双向链表
orderdict = OrderedDict()
orderdict['foo'] = 1
orderdict['bar'] = 2
orderdict['spam'] = 3
orderdict['grok'] = 4

commonDict = dict()
commonDict['foo'] = 1
commonDict['bar'] = 2
commonDict['spam'] = 3
commonDict['grok'] = 4


for k, v in orderdict.items():
    print(k, v)

print("————————————————————————————————————————")
for k, v in commonDict.items():
    print(k, v)

print(json.dumps(orderdict), len(orderdict))
print("————————————————————————————————————————")
print(json.dumps(commonDict), len(commonDict))

在这里插入图片描述

2、字典比较的一些使用方法

# TODO 字典的比较
prices = {
    '苹果': 5.2,
    '梨子': 2.78,
    '香蕉': 1.55,
    '西瓜': 2.20,
    '桃子': 2.75,
    '核桃': 2.75,
}

maxPrice = max(prices)
print(maxPrice)
minPrice = min(prices)
print(minPrice)
# 上面得到的答案并不是我们想要的

maxPrice = max(zip(prices.values(), prices.keys()))
print(maxPrice)
minPrice = min(zip(prices.values(), prices.keys()))
print(minPrice)

print("min", min(prices, key=lambda k: prices[k]))
print("max", max(prices, key=lambda k: prices[k]))

# zip出来的dict只能使用一次
temp = zip(prices.values(), prices.keys())
print(max(temp))
# 下面的注释会报错,temp是空
#print(max(temp))

在这里插入图片描述

3、查找字典中共同点的方法

# 查找字典中的共同点
a = {
    "fine": 1,
    "beauty": 2,
    "wonderful": 3,
}
b = {
    "bad": 1,
    "awesome": 2,
    "fine": 1,
    "beauty": 3,
}

print("并", a.keys() & b.keys())
print("差", a.keys() - b.keys())
print("或", a.keys() | b.keys())
print("异或", a.keys() ^ b.keys())
print("完全相同", a.items() & b.items())

# 排除几个不想要的键值对
c = {key: a[key] for key in a.keys() - {"fine"}}
print(c)

print(a.keys())
# 下面的操作会有问题,因为值会存在重复,下面的会有问题
# print("value并", a.values() & b.values())
# print("value差", a.values() - b.values())
# print("value或", a.values() | b.values())
# print("value异或", a.values() ^ b.values())

# 转成set集合就可以啦
print("value并", set(a.values()) & set(b.values()))
print("value差", set(a.values()) - set(b.values()))
print("value或", set(a.values()) | set(b.values()))
print("value异或", set(a.values()) ^ set(b.values()))

# 创建空set的时候要用set() 不能用{} 因为{}是用来创建空字典的
dict2 = {1, 2, 3, 4}
print(isinstance(dict2, set))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值