首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得按字母顺序排序的名称列表组合?

如何获得按字母顺序排序的名称列表组合?
EN

Stack Overflow用户
提问于 2022-08-03 06:03:55
回答 5查看 109关注 0票数 -1

我有一份名单如下:

代码语言:javascript
复制
names_list = ['Acosta Jose','Bailey Tyler','Barbosa Roberto','Calabro James','Carasone Allison','Adams Zane','Brencher Tim','Chacon Ramon','Arce Manuel']

我想把每个字母的名字组合起来。

例如:字母名是:'Acosta Jose','Adams Zane','Arce Manuel'

这里所需的组合如下:

代码语言:javascript
复制
Acosta Jose Adams Zane
Acosta Jose Arce Manuel
Adams Zane Arce Manuel

给定名称列表的最终所需输出是:

代码语言:javascript
复制
[['Acosta Jose, Adams Zane',
  'Acosta Jose,Arce Manuel',
  'Adams Zane, Arce Manuel'],
 ['Bailey Tyler, Barbosa Roberto',
  'Bailey Tyler, Brencher Tim',
  'Barbosa Roberto, Brencher Tim'],
 ['Calabro James, Carasone Allison',
  'Calabro James, Chacon Ramon',
  'Carasone Allison ,Chacon Ramon']]
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2022-08-03 06:30:04

问题中所显示的输出是相当混乱的。然而,描述似乎表明,这是所需的:

代码语言:javascript
复制
from itertools import combinations

names_list = ['Acosta Jose','Bailey Tyler','Barbosa Roberto','Calabro James','Carasone Allison','Adams Zane','Brencher Tim','Chacon Ramon','Arce Manuel']

ds = {}

for name in sorted(names_list):
    ds.setdefault(name[0], []).append(name)

output = ([[f'{a}, {b}' for a, b in combinations(e, 2)] for e in ds.values()])

print(output)

输出:

代码语言:javascript
复制
[['Acosta Jose, Adams Zane', 'Acosta Jose, Arce Manuel', 'Adams Zane, Arce Manuel'], ['Bailey Tyler, Barbosa Roberto', 'Bailey Tyler, Brencher Tim', 'Barbosa Roberto, Brencher Tim'], ['Calabro James, Carasone Allison', 'Calabro James, Chacon Ramon', 'Carasone Allison, Chacon Ramon']]
票数 3
EN

Stack Overflow用户

发布于 2022-08-03 06:25:50

尝试:

代码语言:javascript
复制
import itertools
named_list = ['Acosta Jose','Adams Zane','Arce Manuel']
print(sorted(list(map(', '.join, itertools.permutations(named_list, 2)))))

结果:

代码语言:javascript
复制
['Acosta Jose, Adams Zane',
 'Acosta Jose, Arce Manuel',
 'Adams Zane, Acosta Jose',
 'Adams Zane, Arce Manuel',
 'Arce Manuel, Acosta Jose',
 'Arce Manuel, Adams Zane']
票数 2
EN

Stack Overflow用户

发布于 2022-08-03 06:29:05

这是我的看法:

代码语言:javascript
复制
import string, itertools

names_list = ['Acosta Jose','Bailey Tyler','Barbosa Roberto','Calabro James','Carasone Allison','Adams Zane','Brencher Tim','Chacon Ramon','Arce Manuel']
names_sorted = []
result = []

for a in string.ascii_uppercase:
    temp = []
    for name in names_list:
        if name.startswith(a):
            temp.append(name)
    if temp:
        names_sorted.append(temp)

for name in names_sorted:
    result.append(sorted(list(map(', '.join, itertools.combinations(name, 2)))))

print(result)

结果:

代码语言:javascript
复制
[
    ['Acosta Jose, Adams Zane', 'Acosta Jose, Arce Manuel', 'Adams Zane, Arce Manuel'],
    ['Bailey Tyler, Barbosa Roberto', 'Bailey Tyler, Brencher Tim', 'Barbosa Roberto, Brencher Tim'],
    ['Calabro James, Carasone Allison', 'Calabro James, Chacon Ramon', 'Carasone Allison, Chacon Ramon']
]

编辑:根据Stuart注释将排列更改为组合。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73216912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档