排序列表列表时忽略字符

Ignore characters when sorting list of lists

尝试创建一个函数来从大学数据列表中过滤掉 'University of',以便按字母顺序对它们进行排序。这是我目前的代码:

def filter_list(uni):
for u in uni:
    for n in u:
      if n.startswith('University of the '):
        n = n[18:] + ' University'
      elif n.startswith('University of '):
        n = n[14:] + ' University'
    return uni

预期输出:

('Buckinghamshire New University', '78%', '39%', '82%', '0%', '0%', '52%'), ('Middlesex University', '82%', '48%', '80%', '57%', '75%', '54%'), ('City, University of London', '83%', '51%', '77%', '69%', '63%', '59%'), ('Goldsmiths, University of London', '85%', '54%', '77%', '70%', '100%', '61%'), ('Bedfordshire University', '81%', '42%', '77%', '58%', '57%', '61%'), ('Bolton University', '81%', '48%', '85%', '0%', '0%', '63%')...

当前输出:

('Buckinghamshire New University', '78%', '39%', '82%', '0%', '0%', '52%'), ('Middlesex University', '82%', '48%', '80%', '57%', '75%', '54%'), ('City, University of London', '83%', '51%', '77%', '69%', '63%', '59%'), ('Goldsmiths, University of London', '85%', '54%', '77%', '70%', '100%', '61%'), ('University of Bedfordshire', '81%', '42%', '77%', '58%', '57%', '61%'), ('University of Bolton', '81%', '48%', '85%', '0%', '0%', '63%')...

更改字符串名称的代码有效,只需修改列表中的实际字符串即可。有人知道怎么做吗?

您将您的值分配给 n,但您再也没有使用 n。更改 n 不会更改列表中元组中的值。

相反,您可以创建一个新列表并将每所大学追加到该列表中,新列表包含每所大学的过滤值。我还冒昧地使用更具描述性的变量名称。

def filter_university_list(universities):
    filtered_universities = []

    for university in universities:
        current_university = []

        for field in university:
            if field.startswith('University of the '):
                field = field[18:] + ' University'
            elif field.startswith('University of '):
                field = field[14:] + ' University'

            current_university.append(field)
        
        filtered_universities.append(current_university)

    return filtered_universities