使用了两种算法对ip地址进行排序,并测试了两种算法的时间。一种是将ip地址转化成二进制形式,然后用sort函数,和重新定义的比较函数进行排序,一种是分割ip地址为四个部分,分别排序,每次对一个地址位进行排序并存入字典,然后再排序。知道四个部分排序完毕,经测试第二种算法比第一种算法运算的时间效率至少快一个数量级: sorted the ip not used BINARY consumed 0.010999917984 s! sorted the ip used BINARY consumed
1、利用key排序
d = {'d1':2, 'd2':4, 'd4':1,'d3':3,}
for k in sorted(d):
print(k,d[k])
d1 2
d2 4
d3 3
d4 1
2、利用value排序:__getitem__
d = {'d1':2, 'd2':4, 'd4':1,'d3':3,}
for k in sorted(d,key=d.__getitem__):
print(k,d[k])
d4 1
d1 2
d3 3
d2 4
反序:revers
今天在写一个算法的过程中,得到了一个类似下面的字典:
{'user1':0.456,'user2':0.999,'user3':0.789,user:'0.234'}
想要获取字典里value值前3的key,就产生了如下代码
直接贴代码:
def order_dict(dicts, n):
result = []
result1 = []
p = sorted([(k, v) for k, v in dicts.items()], reverse=True)
s = set()
f