相关文章推荐
帅呆的弓箭  ·  docker-machine http ...·  1 年前    · 

利用队列来实现,可以满足任意多个字段,任意升序和降序的排序的场景,比如“按照a字段升序,b字段降序,c字段升序”

sort_feild_array的格式为:

[{"balance_time": "desc"}, {"bk_id": "asc"}, {"trans_id": "desc"}]

asc升序
desc降序

unsorted_list的格式为:

 unsorted_list={'1':{"balance_time":12344,"bk_id":45646,"trans_id":78940},'2':{"balance_time":12344,"bk_id":45647,"trans_id":78941},'3':{"balance_time":12344,"bk_id":45648,"trans_id":78942},'4':{"balance_time":12345,"bk_id":45642,"trans_id":78943},'5':{"balance_time":12345,"bk_id":45641,"trans_id":78944},'6':{"balance_time":12345,"bk_id":45640,"trans_id":78944},'7':{"balance_time":12346,"bk_id":"45649","trans_id":78944},'8':{"balance_time":12346,"bk_id":45648,"trans_id":78941},'9':{"balance_time":12346,"bk_id":45647,"trans_id":78941}}

具体实现:

    def comprex_sort_index_list(self,sort_feild_array,unsorted_list):
        sort_item_queue= Queue.Queue()
        sort_item_queue.put(unsorted_list)
        for sort in sort_feild_array:
            sort_item_queue_temp = Queue.Queue()
            sort_feild=sort.keys()[0]
            is_reverse=True if sort[sort_feild]=="desc" else False
            while not sort_item_queue.empty():
                queue_item=sort_item_queue.get()
                if isinstance(queue_item,dict):
                    queue_item = tuple(queue_item.items())
                result_sort=sorted(queue_item,key=lambda x:x[1][sort_feild],reverse=is_reverse)
                sort_feild_value_dictinct=sorted(list(set(map(lambda x:x[1][sort_feild],result_sort))),reverse=is_reverse)
                for feild_value in sort_feild_value_dictinct:
                    sort_item_queue_temp.put(filter(lambda x:x[1][sort_feild]==feild_value,result_sort))
            sort_item_queue=sort_item_queue_temp
        sorted_list=list()
        while not sort_item_queue.empty():
            sorted_list=sorted_list+sort_item_queue.get()
        return sorted_list
                    利用队列来实现,可以满足任意多个字段,任意升序和降序的排序的场景,比如“按照a字段升序,b字段降序,c字段升序”sort_feild_array的格式为:[{"balance_time": "desc"}, {"bk_id": "asc"}, {"trans_id": "desc"}]asc升序desc降序unsorted_list的格式为: unsorted_list={'1':{"balance_time":12344,"bk_id":45646,"trans_id":78940},'2'
datadir = "D:\\xiangjun_data_2022_1_25\\signal\\signal\\DataSource_copy\\"
fig_save_dir = "D:/work/signal/signal/ims/"
list = os.listdir(datadir)
print(list)
# list = ['2021_10_12_5_3_0.csv', '2021_10_11_15_35_56.csv', '2021_10_1
				
list多级排序 首先,默认的sorted函数时就可以实现多级排序,主要看优先级参考的位置。 1、优先级位置按默认顺序,逐级排序,第一个位置优先级最高,第二个位置优先级次之,第三个位置再次之…:sorted函数 list=[[1,2,9,'r'],[2,3,4,'a'],[2,1,3,'c'],[1,4,5,'b'],[1,2,4,'f'],[1,2,4,'d']] list1=sorted(list) print(list1) ## 运行结果 [[1, 2, 4, 'd'], [1, 2, 4, 'f'
>>> pairs = [('11', 'one'),('3', 'three'), ('2', 'two'),('2', 'zzz'), ('4', 'four')] >>> sorted(pairs) [('11', 'one'), ('2', 'two'), ('2', 'zzz'... list.sort( key=None, reverse=False) key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。 reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)。 现在有个列表 l1 = [{'star': 4, 'level': 30, 'cfgid': 2042302, 'name': '哈维尔'}, a = [(1,2), (2,4), (1,3)] a.sort(key=lambda elem: (elem[0], -elem[1])) print(a) # [(1, 3), (1, 2), (2, 4)] def my_key(x): return x[0], -x[1] a = [(1,2), (2,4), (1,3), (5,3)] a.sort(key=my_key
可以使用内置函数 `sorted()` 对字典进行排序。 要对字典按照某个特定的字段进行排序,可以在调用 `sorted()` 函数时传递一个 `key` 参数,其中指定了用于排序字段。例如,要按照字典的值(`value`)进行排序,可以这样写: sorted(dictionary.items(), key=lambda x: x[1]) 如果要按照字典的键(`key`)进行排序,可以这样写: sorted(dictionary.items(), key=lambda x: x[0]) 如果要降序排列,可以在 `key` 函数中加入一个负号: sorted(dictionary.items(), key=lambda x: -x[1]) 这样就可以对字典按照指定的字段进行排序了。 注意:上述方法得到的是一个列表,而不是字典本身。如果需要得到一个排序后的字典,可以使用 `collections` 模块中的 `OrderedDict` 类。 from collections import OrderedDict d = OrderedDict(sorted(dictionary.items(), key=lambda x: x[1])) 这样就得到了一个按照指定字段排序字典
qq_42859813: 我看https://blog.csdn.net/weixin_44377973/article/details/105444429#:~:text=%E4%BF%AE%E6%94%B9oracle%E5%AE%9E%E4%BE%8B%E7%9A%84%E5%90%8D%E7%A7%B0%201%20step%201%EF%BC%9A%E5%81%9C%E6%AD%A2%E5%AE%9E%E4%BE%8B%20SQL%3E%20shutdown%20immediate%20Database,4%20step%204%EF%BC%9A%E5%90%AF%E5%8A%A8%E5%AE%9E%E4%BE%8B%20...%205%20step%205%EF%BC%9A%E6%9F%A5%E7%9C%8B%E5%AE%9E%E4%BE%8B%E5%90%8D%E7%A7%B0%20这篇文章密码文件也可以直接改名,是否可以呢! Elasticsearch性能优化-移除FST堆内存 a925907195: 可以,es官方的不行,开发成本不高 使用GoLand IDE进行开发,GOPATH设置无效 ReganYue: 前排支持一下,可以的话来我博客看看吧 软件测试基础理论知识 liaoyanyunde: 软件测试基础理论知识 fakediao: 太详细了!!!!!!!!