这是一个系列的文章,会陆陆续续更新,并且这系列的文章会以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))