python 第四天

怎样实现一个键对应多个值的字典
一个字典就是一个键对应一个单值的映射,如果你想要一个键映射多个值,那么你
就需要将这多个值放到另外的容器中。
like:d={ ‘a’:[1,2,3]
‘b’:[7,8]
}
defaultdict 是一个新like字典
from collections import defaultdict
d = defaultdict(list)
d[‘a’].append(1)
d[‘a’].append(2)
d[‘b’].append(4)
为了能控制一个字典中元素的顺序, 你可以使用collections 模块中的OrderedDict 类
OrderedDict 内部维护着一个根据键插入顺序排序的双向链表。每次当一个新的元
素插入进来的时候,它会被放到链表的尾部。一个OrderedDict 的大小是一个普通字典的两倍
from collections import OrderedDict
def ordered_dict():
d = OrderedDict()
d[‘foo’] = 1
d[‘bar’] = 2
d[‘spam’] = 3
d[‘grok’] = 4
for key in d:
print(key, d[key])
将dict 类型转化为字符串类型:
import json
json.dumps(d)
print(d)
字典的运算:需要字典的值排序的情况下,使用zip() 函数方案通过将字典” 反转” 为(值,键) 元组序列。
price={“aa”=356.45,”bb”=234.56,”cc”=358.78,”dd”=238.90}
min_price=min(zip(price.values(),price.keys()))
print(min_price) //(234.56,”bb”)
max_price=max(zip(price.values(),price.keys()))
print(max_price) //(358.78,”cc”)
print(sorted(zip(price.values(),price.keys())))
如果用print(min(price)) //aa
或用Lambda 表达式,print(price[min(price,key=lambda k:price[k])])
查找两字典的相同项,字典的items() 方法返回一个包含(键,值) 对的元素视图对象,这个对象同样也支持集合操作,并且可以被用来查找两个字典有哪些相同的键值,尽管字典的values() 方法也是类似,但是它并不支持这里介绍的集合操作:
price1={“aa”=356.65,”bbb”=234.56,”cc”=358.78,”dds”=238.90}
print(price1.keys()&price.keys()) //{“aa”,”cc”}
print(price1.keys()-price.keys()) //{“bbb”,”dds”}
print(price1.items()-price.items()) //{(“aa”,356.65),(“bbb”,234.56),(“dds”,238.90)}
print(price1.items()&price.items()) //{(“cc”,358.78)}
假如你想以现有字典构造一个
排除几个指定键的新字典。下面利用字典推导来实现这样的需求
c = {key:a[key] for key in a.keys() - {‘z’, ‘w’}}
删除序列相同元素并保持顺序.

猜你喜欢

转载自blog.csdn.net/zql_111/article/details/80041308