python提取出给定列表_给定列表中的Python组图

在本教程中,我们将编写一个将所有字谜分组到一个列表中的程序。首先,让我们看看什么是字谜。

具有相同字符但顺序不同的任何两个字符串称为七字组。

在深入探讨解决方案之前,让我们看一个示例。

输入值['cat', 'dog', 'fired', 'god', 'pat', 'tap', 'fried', 'tac']

输出结果[['cat', 'tac'], ['dog', 'god'], ['fried', 'fired'], ['pat', 'tap']]

我们将把问题分解为两部分。首先,我们将编写一个检查两个字符串是否为字谜的函数。请按照以下步骤编写代码以检查字谜。初始化字符串。

对两个字符串进行排序。

如果两个排序的字符串相等,则返回True,否则返回False。

示例# simple lambda function to check whether two strings are anagrams or not

are_anagrams = lambda x, y: str(sorted(x.lower())) == str(sorted(y.lower()))

# calling the function

print(are_anagrams('cat', 'tac'))

print(are_anagrams('cat', 'Tac'))

print(are_anagrams('cat', 'dog'))

输出结果

如果运行上面的代码,则将得到以下结果。True

True

False

现在,我们知道如何检查两个字符串是否为字谜。但是,这还不足以解决我们的问题。我们需要将列表中的所有字谜分组(存储)为子列表。

我们如何解决这个问题?

最好的做法是使用字典对元素进行分组。我们将有一个用于相关字谜的单键。如果您是Python的新手,这会让人感到困惑。让我们看看实现我们想要的步骤。初始化字符串列表。

初始化一个空字典。

遍历列表。如果它存在于字典中,则将字符串附加到其列表中。

排序字符串。

检查字典中是否存在它。

否则,使用包含当前字符串的列表来初始化密钥,以存储字谜。

在列表中打印字典的所有值。

示例# initialzing a list of strings

anagrams = ['cat', 'dog', 'fired', 'god', 'pat', 'tap', 'fried', 'tac']

# initializing an empty dict

grouped_anagrams = {}

# iterating over the list to group all anagrams

for string in anagrams:

# sorting the string

sorted_string = str(sorted(string))

# checking the string in dict

if sorted_string in grouped_anagrams:

# adding the string to the group anagrams

grouped_anagrams[sorted_string].append(string)

else:

# initializing a list with current string

grouped_anagrams[sorted_string] = [string]

# printing the values of the dict (anagram groups)

print(list(grouped_anagrams.values()))

输出结果

如果运行上面的代码,则将得到以下结果。[['dog', 'god'], ['pat', 'tap'], ['cat', 'tac'], ['fired', 'fried']]

结论

您也可以使用其他方法解决问题。有一个名为defaultdict的数据结构,可帮助您避免检查字典中的键。您可以浏览它并相应地更改代码。

如果您对本教程有任何疑问,请在评论部分中提及。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值