【问题标题】:Find a pair of strings in a list in Python [closed]在 Python 中的列表中查找一对字符串 [关闭]
【发布时间】:2019-01-26 22:07:41
【问题描述】:

我刚开始学习 Python,一直在努力解决这个问题(以及如何在标题中描述它):

假设有一个像这样的名单:

['Ben', 'Benjamin', 'Jenny', 'Alice', 'Alexandra', 'Alex', ...]

我得到了一个“名称别名对”,如下所示:

[['Benjamin', 'Ben'], ['Alexandra', 'Alex'], ['Jennifer', 'Jenny'], ...]

如何查找列表中是否存在重复名称以及哪些重复名称?
例如。 Ben, Benjamin 是重复的,Alex, Alexandra 是重复的,但 Jenny 不是。

我正在考虑遍历名称列表,查看别名对中是否有任何匹配项。如果是,则再次迭代并查找对应部分是否也存在。我想知道是否有更好的方法来做到这一点。

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: python algorithm types


【解决方案1】:

将您的列表转换为set

names = frozenset(names)

然后你可以很容易地检查每一对:

for full, short in name_pairs:
    if full in names and short in names:

【讨论】:

  • 您可以使用if {full, short} <= names: 进一步减少if。如果 fullshort 的值是可散列的,则此方法有效,因为它们在此问题中。
  • 为什么是frozenset 而不是set
  • @khelwood 通常,对象的功能不应超过所需。
  • @bipll 这不是一个真正的规则。如果您愿意,请务必使用冷冻套装;我只是对是否有理由感兴趣。
  • @khelwood 在这里,在这个片段中,我不需要向集合中添加更多元素;所以我把它冻结了。
猜你喜欢
  • 1970-01-01
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
  • 2023-04-03
  • 2017-04-25
  • 2011-08-31
  • 1970-01-01
相关资源
最近更新 更多