包含dict(a,b,c作为键的python排序列表)

问题描述 投票:-2回答:1

我正在尝试对包含字典的列表进行排序

import pap4globals
data_list_dict1=[{'a':1, 'b':4, 'c':2},
                {'a':9, 'b':3,'c':2},
                {'a':2,'b':10,'c':1}]

def sort1(data,rev=False):
    if rev==False:
        temp=0
        for i in range(0,len(data_list_dict1)-1):
            startIndex=len(data_list_dict1)-1
            for j in range(len(data_list_dict1[i]-2,i-1,-1)):
                if data_list_dict1[j]<data_list_dict1[startIndex]:
                    startIndex=j
            temp=data_list_dict1[i]
            data_list_dict1[i]=data_list_dict1[startIndex]
            data_list_dict1[startIndex]=temp
        return temp.append(pap4globals.data_list_dict)

    if rev==True:
        temp=0
        for i in range(0,len(data_list_dict1)-1):
            startIndex=len(data_list_dict1)-1
            for j in range(len(data_list_dict1[i]-2,i-1,-1)):
                if data_list_dict1[j]>data_list_dict1[startIndex]:
                    startIndex=j
            temp=data_list_dict1[i]
            data_list_dict1[i]=data_list_dict1[startIndex]
            data_list_dict1[startIndex]=temp
        return temp.append(pap4globals.data_list_dict)

其中pap4globals

import os

def initiate():
    global data_list_dict
    data_list_dict=[]

试图调用pap4drv.py上的函数

import os
import pap4globals
from pap4lib import *
def main():
    pap4globals.initiate()
    sort1(pap4globals.data_list_dict,False)
    print(pap4globals.data_list_dict)


if __name__ == "__main__":
    main()

然后我收到错误消息

TypeError: unsupported operand type(s) for -: 'dict' and 'int'

仍然对适合我目的的替代品感到困惑。仅在下一行吗?

for j in range(len(data_list_dict1[i]-2,i-1,-1)):

ps.s。 :我的讲师不允许我们在python中使用内置函数

python sorting
1个回答
1
投票

行:

for j in range(len(data_list_dict1[i]-2,i-1,-1)):

应更改为

for j in range(len(data_list_dict1[i])-2,i-1,-1):

现在出现错误,因为len的参数过多。

其次,以下行

if data_list_dict1[j] < data_list_dict1[startIndex]:

将抛出错误,因为两个词典之间不支持<

关于您到底想排序什么?

© www.soinside.com 2019 - 2024. All rights reserved.