Python - 混合对字符串列表中的数字排序

pythonserver side programmingprogramming

给定的问题陈述是在 Python 的帮助下在混合对字符串列表中执行数字排序操作。有时我们需要在 Python 中对混合数据类型列表进行排序,因此本文将有助于获取给定数据集所需的排序形式。

理解问题

手头的问题是执行给定字符串列表中混合对的数字排序。因此,我们将得到一个列表,其中包含字符串和整数等混合数据类型。因此,我们必须根据特定元素中的数值对它们进行排序。例如,让我们看下面的图片来更清楚地理解 -

为了解决上述问题,我们可以有多种选择,因为每个问题都可以用不同的方法解决。在本文中,我们将讨论大多数方法。

第一种方法 - 算法

  • 步骤 1 - 在这种方法中,我们首先将混合对字符串数字列表初始化为mixed_list。

  • 步骤 2 - 然后将函数定义为sorting_mixed_pa​​ir,在此函数中,我们将传递上面初始化的mixed_list作为输入。

  • 步骤 3 - 在上述函数中,我们将拆分列表的项目并将第二项转换为整数。

  • 步骤 4 - 使用sorted方法,我们将使用上述函数作为关键函数对给定列表进行排序,以显示给定列表对的排序顺序。

  • 步骤 5 - 对混合对进行排序后,我们将使用print将其打印在控制台上函数。

示例

# 初始化混合对字符串列表
mixed_pa​​ir = ['Daniel 4', 'Oliver 7', 'Jack 3', 'Henry 9', 'James 8', 'Benjamin 6', 'Jackson 5', 'Ryan 2']

# 定义函数以获取混合排序列表
def sorting_mixed_pair(mixed_pair):
   name, id = mixed_pair.split()
   return int(id)  

# 调用上面创建的函数
sorted_list = sorted(mixed_pa​​ir, key=sorting_mixed_pa​​ir)

# 打印排序后的混合对字符串列表
print("数字排序混合对字符串列表 \n ", sorted_list)

输出

数字排序混合对字符串列表
['Ryan 2', 'Jack 3', 'Daniel 4', 'Jackson 5', 'Benjamin 6', 'Oliver 7', 'James 8', 'Henry 9']

第二种方法 - 算法

  • 步骤 1 − 将混合对字符串数字列表初始化为mixed_list。

  • 步骤 2 − 定义函数名为 sorting_mixed_pa​​ir,该函数将mixed_list作为输入。

  • 步骤 3 − 在上述函数中,lambda 函数将用于拆分给定的对并将第二个值转换为整数。此外,我们将使用 sorted 方法对列表进行排序,但顺序相反。

  • 步骤 4 - 调用上面创建的函数并打印排序后的混合对字符串列表。

示例

# 初始化混合对字符串列表
mixed_pa​​ir = ['Daniel 4', 'Oliver 7', 'Jack 3', 'Henry 9', 'James 8', 'Benjamin 6', 'Jackson 5', 'Ryan 2']

# 定义函数以获取混合排序列表
def sorting_mixed_pa​​ir(mixed_pa​​ir):
    return sorted(mixed_pa​​ir, key = lambda item: int(item.split()[1]), reverse = True)

#调用上述函数
sorted_list = sorting_mixed_pa​​ir(mixed_pa​​ir)

# 打印已排序的混合对字符串列表
print("数字排序混合对字符串列表 \n ", sorted_list)

输出

数字排序混合对字符串列表
['Henry 9', 'James 8', 'Oliver 7', 'Benjamin 6', 'Jackson 5', 'Daniel 4', 'Jack 3', 'Ryan 2']

复杂度

上述方法对混合对字符串列表进行数字排序的时间复杂度为 O(n log n),其中 n 是给定混合对列表中存在的项目数。由于我们在两种方法中都使用了排序方法,因此排序方法的时间复杂度为 O(n log n)。

结论

由于我们使用了两种方法来解决 Python 中混合对字符串列表中的数字排序问题。上述方法彼此非常相似,不同之处在于我们在第二种方法中使用了 lambda 函数。这就是为什么这两种方法具有相似的时间复杂度。


相关文章