【问题标题】:How to Delete Largest Variable in a List如何删除列表中的最大变量
【发布时间】:2019-05-07 08:50:22
【问题描述】:

我目前正在编写一些代码,该代码打印列表中最大的项目,然后删除该最大的项目。它重复此操作,按降序打印项目。

列表的每个部分都包含一个志愿者姓名、他们计算的行李总数及其准确性。该算法检查精度最高的部分,然后打印所有三个上述变量。

不幸的是,我不知道如何找到列表最大部分的位置(它的索引),不允许我删除它。

我已经尝试过使用list.index 命令以及只输入del[maximum = max(VolunteerList, key = operator.itemgetter(2))] 都不起作用。

Volunteer1TotalBags = 5
Volunteer2TotalBags = 23
Volunteer3TotalBags = 567
Volunteer4TotalBags = 12
Volunteer5TotalBags = 90
Volunteer6TotalBags = 11

Volunteer1Accuracy = 12
Volunteer2Accuracy = 65
Volunteer3Accuracy = 3
Volunteer4Accuracy = 5
Volunteer5Accuracy = 345
Volunteer6Accuracy = 43

def Option1():
    global Volunteer1Forename
    global Volunteer2Forename
    global Volunteer3Forename
    global Volunteer4Forename
    global Volunteer5Forename
    global Volunteer6Forename
    global Volunteer1Surname
    global Volunteer2Surname
    global Volunteer3Surname
    global Volunteer4Surname
    global Volunteer5Surname
    global Volunteer6Surname
    VolunteerData() # This calls back the variables above from a previous function
    Volunteer1FullName = Volunteer1Forename + Volunteer1Surname + "'s Total Bags and Accuracy"
    Volunteer2FullName = Volunteer2Forename + Volunteer2Surname + "'s Total Bags and Accuracy"
    Volunteer3FullName = Volunteer3Forename + Volunteer3Surname + "'s Total Bags and Accuracy"
    Volunteer4FullName = Volunteer4Forename + Volunteer4Surname + "'s Total Bags and Accuracy"
    Volunteer5FullName = Volunteer5Forename + Volunteer5Surname + "'s Total Bags and Accuracy"
    Volunteer6FullName = Volunteer6Forename + Volunteer6Surname + "'s Total Bags and Accuracy"
    VolunteerList = {(Volunteer1FullName, Volunteer1TotalBags, Volunteer1Accuracy), (Volunteer2FullName, Volunteer2TotalBags, Volunteer2Accuracy), (Volunteer3FullName, Volunteer3TotalBags, Volunteer3Accuracy), (Volunteer4FullName, Volunteer4TotalBags, Volunteer4Accuracy), (Volunteer5FullName, Volunteer5TotalBags, Volunteer5Accuracy), (Volunteer6FullName, Volunteer6TotalBags, Volunteer6Accuracy)}
    maximum = max(VolunteerList, key = operator.itemgetter(2))
    maximumindex = VolunteerList.index(max(VolunteerList, key = operator.itemgetter(2)))
    print(maximum)
    del[maximumindex]
Option1()

这是我得到的错误,这是因为程序无法为列表的最大部分生成索引:

maximumindex = VolunteerList.index(max(VolunteerList, key = operator.itemgetter(2)))
AttributeError: 'set' object has no attribute 'index'

如果你不理解我的困境,请告诉我,我不知道我的措辞是否足够清楚。

【问题讨论】:

  • 您可以修改选择排序。使用它确定最大元素的索引,然后一旦拥有它,只需执行 del arr[index] 或任何您想用它做的事情。

标签: python arrays list sorting


【解决方案1】:

您正在此处创建set

VolunteerList = {(Volunteer1FullName, Volunteer1TotalBags, Volunteer1Accuracy), (Volunteer2FullName, Volunteer2TotalBags, Volunteer2Accuracy), (Volunteer3FullName, Volunteer3TotalBags, Volunteer3Accuracy), (Volunteer4FullName, Volunteer4TotalBags, Volunteer4Accuracy), (Volunteer5FullName, Volunteer5TotalBags, Volunteer5Accuracy), (Volunteer6FullName, Volunteer6TotalBags, Volunteer6Accuracy)}

sets 不支持索引。你可能想要一个list

VolunteerList = [(Volunteer1FullName, Volunteer1TotalBags, Volunteer1Accuracy), (Volunteer2FullName, Volunteer2TotalBags, Volunteer2Accuracy), (Volunteer3FullName, Volunteer3TotalBags, Volunteer3Accuracy), (Volunteer4FullName, Volunteer4TotalBags, Volunteer4Accuracy), (Volunteer5FullName, Volunteer5TotalBags, Volunteer5Accuracy), (Volunteer6FullName, Volunteer6TotalBags, Volunteer6Accuracy)]

{ 替换为[

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-26
    • 2017-10-29
    • 2021-11-02
    • 1970-01-01
    • 2014-08-09
    • 2013-08-12
    • 2020-08-22
    • 2012-10-06
    相关资源
    最近更新 更多