0

作为一项学校作业,我必须创建一个 Python 应用程序,允许用户添加 X 人的个人信息。话虽如此,该程序允许用户选择许多选项,其中之一是按字母顺序对人员列表进行排序,而无需使用 sort() 或 quicksort() 函数。我唯一要做的就是使用冒泡排序方法。

最初,我的想法是为不同的数据类型创建数组,例如:

姓氏 = [ ]

名字 = [ ]

出生日期 = [ ]

性别 = [ ]

但问题是,如果我对 Last_names 应用冒泡排序,其他数组信息如何与新订单同步?就像每个人的信息会混淆吗?

更新:

所以我决定使用格式 person1 = ["name1", "date_of_birth1", "gender1".....]

然后将其添加到另一个列表

地址簿 = ["person1", "person2", "person3", .....]

4

1 回答 1

0

我会使用字典而不是每个人的列表。例如 :

person1 = {
    "name":"Bao Tang",
    "date_of_birth":"2000/01/01",
    "gender":"male"
}

您可以将字典直接存储到列表中:

persons = [
    {
        "name":"Bao Tang",
        "date_of_birth":"2000/01/01",
        "gender":"male"
    },
    {
        "name":"Name 2",
        "date_of_birth":"2001/02/03",
        "gender":"female"
    }
]

然后可以通过以下方式访问记录及其信息:

persons[index]["name"]
persons[index]["date_of_birth"]
persons[index]["gender"]

persons[0]["gender"] # based on the example list above, would return the value "male"

对于您的排序,您可以在函数中添加一个“key”参数,并使用该参数指定要对哪些信息进行排序:

def bubble_sort(arr, key):
    n = len(arr)
    for i in range(n - 1):
        for j in range(0, n - i - 1):
            if arr[j][key] > arr[j + 1][key]:            # we compare keys of 2 records
                arr[j], arr[j + 1] = arr[j + 1], arr[j]  # we swap the whole record

# example call
bubble_sort(persons, "date_of_birth")

注意:即使它非常简单并且应该可以工作,但这都是未经测试的代码。谨慎使用!

于 2021-05-28T08:17:57.810 回答