【2017-09-04】数据结构与算法(三)

2017-09-04  本文已影响0人  小蜗牛的成长

字典的运算

prices = {
'ACME': 45.23,
'AAPL': 612.78,
'IBM': 205.55,
'HPQ': 37.20,
'FB': 10.75
        }

prices_min=min(zip(prices.values(),prices.keys()))
prices_max=max(zip(prices.values(),prices.keys()))
prices_sorted = sorted(zip(prices.values(), prices.keys()))
prices_sorted_1 = sorted(prices.items(), key=lambda item: item[1])
prices_sorted_re = sorted(zip(prices.values(), prices.keys()),reverse=True)#从大到小
#结果
>>prices_min=(10.75, 'FB')
>>prices_max=(612.78, 'AAPL')
>>prices_sorted=[(10.75, 'FB'), (37.2, 'HPQ'), (45.23, 'ACME'), (205.55, 'IBM'), (612.78, 'AAPL')]
>>prices_sorted_1=[('FB', 10.75), ('HPQ', 37.2), ('ACME', 45.23), ('IBM', 205.55), ('AAPL', 612.78)]
>>prices_sorted_re=[(612.78, 'AAPL'), (205.55, 'IBM'), (45.23, 'ACME'), (37.2, 'HPQ'), (10.75, 'FB')]

其中,sorted(iterable,key,reverse)方法,iterable表示可以迭代的对象,例如可以是dict.items()、dict.keys()等,key是一个函数,用来选取参与比较的元素,reverse则是用来指定排序是倒序还是顺序,reverse=true则是倒序,reverse=false时则是顺序,默认时reverse=false。

#实例:过滤字典自定的关键字:过滤掉z、w关键字
a = {
'x' : 1,
'y' : 2,
'z' : 3
}
b= {
'w' : 10,
'x' : 11,
'y' : 2
}
c={key:a[key] for key in a.keys()-{"z","w"}}
print(c)
#结果
>>{'y': 2, 'x': 1}
b= {
'w' : 10,
'x' : 11,
'y' : 2
}
over={key:value for key,value in b.items() if value>5}
over1=dict((key,value) for key,value in b.items() if value>5)#性能更好
print(over)
print(over1)
#结果
>>{'w': 10, 'x': 11}
>>{'w': 10, 'x': 11}

推导式,又称为解析式,可以从一个数据序列构造一个新的数据序列的结构体。python中,主要有:
- 列表推导式(list)
- 字典推倒时(dict)
- 集合推倒时(set)

#列表推倒时,使用[]:求30以内,能被3整除的数
multiples = [i for i in range(30) if i % 3 is 0]
print(multiples)
#结果
>>[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
#集合推倒时,使用{}:对列表中每个值进行指数(幂)计算
squared = {x**2 for x in [1, 1, 2]}
print(squared)
#结果
>>{1, 4}
#生成生成器,使用():求30以内,能被3整除的数
multiples = (i for i in range(30) if i % 3 is 0)
print(multiples)
#结果
>><generator object <genexpr> at 0x007F1630>

上一篇下一篇

猜你喜欢

热点阅读