包含dict(a、b、c作为键)的Python传感器列表

2024-05-21 08:44:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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)

巴普家族在哪里

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)):

另外:我的讲师不允许我们在python中使用内置函数


Tags: inimportfordatalenifdefrev
1条回答
网友
1楼 · 发布于 2024-05-21 08:44:39

该行:

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]:

将引发错误,因为两个字典之间不支持<

你到底想排序什么

编辑- 我调整了你的功能。这应该起作用:

def sort1(data,rev=False):
    if rev==False:
        for letter in data_list_dict1[0]: #First the A, then the B

            for i in range(0, len(data_list_dict1) - 1):
                currSmallestIndex = i
                for  j in range(i + 1, len(data_list_dict1)):
                    if (data_list_dict1[j][letter] < data_list_dict1[currSmallestIndex][letter]):
                        currSmallestIndex = j

                temp=data_list_dict1[i][letter]
                data_list_dict1[i][letter]=data_list_dict1[currSmallestIndex][letter]
                data_list_dict1[currSmallestIndex][letter]=temp

相关问题 更多 >