python - 列表中超过 1 个最长的字符串?

标签 python python-3.x

我有一份美国所有州名的列表。

states = ['Oklahoma', 'Kansas', 'North Carolina', 'Georgia', 'Oregon',
      'Mississippi', 'Minnesota', 'Colorado', 'Alabama',
      'Massachusetts', 'Arizona', 'Connecticut', 'Montana',
      'West Virginia', 'Nebraska', 'New York', 'Nevada', 'Idaho',
      'New Jersey', 'Missouri', 'South Carolina', 'Pennsylvania',
      'Rhode Island', 'New Mexico', 'Alaska', 'New Hampshire',
      'Tennessee', 'Washington', 'Indiana', 'Hawaii', 'Kentucky',
      'Virginia', 'Ohio', 'Wisconsin', 'Maryland', 'Florida',
      'Utah', 'Maine', 'California', 'Vermont', 'Arkansas', 'Wyoming',
      'Louisiana', 'North Dakota', 'South Dakota', 'Texas',
      'Illinois', 'Iowa', 'Michigan', 'Delaware']

我想在这个项目列表中找到最长的字符串,这很容易使用以下内容:

def longest_state(data):
    return(max(states,key=len))
print(longest_state(states)

这将返回“North Carolina”,其长度为 14。但是,“South Carolina”也是 14,但未返回。

我尝试使用以下 stackoverflow 线程,它有一个示例,可以使用列表理解来查找多个最长的字符串,但我无法使其工作... Python's most efficient way to choose longest string in list?

我还尝试使用 if/else 语句将列表项附加到另一个变量,如果它等于当前最长项的长度但不成功

有人能帮忙吗?

最佳答案

您可以将所有最长的名字存储在一个数组中

def longest_state(data):
    cur_longest = []
    cur_longest_num = 0
    for state in data:
        if len(state) == cur_longest_num:
            cur_longest.append(state)
        elif len(state) > cur_longest_num:
            cur_longest = [state]
            cur_longest_num = len(state)
    return cur_longest

关于python - 列表中超过 1 个最长的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52264154/

相关文章:

python - 如何正确创建自定义文本编解码器?

python - "a type/class/function/module/... object"的含义?

python - Django 管理界面 : using horizontal_filter with ManyToMany field with intermediate table

python - 语法错误 : Non-UTF-8?

python - 如何有效地将矩阵变换应用于 NumPy 数组的每一行?

python 在 linux 上使用 os.system 传递参数

eclipse - Python3 PyQt4 创建一个简单的 QCheckBox 并更改 bool 变量

python - 如何使用 Python 的 ast 创建类型化返回? - `def f() -> bool: return True`

python - smtplib 中的 "No module named email.utils"与 gui2exe

python - 我如何按组排序?