我有一份名单如下:
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'
这里所需的组合如下:
Acosta Jose Adams Zane
Acosta Jose Arce Manuel
Adams Zane Arce Manuel给定名称列表的最终所需输出是:
[['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']]发布于 2022-08-03 06:30:04
问题中所显示的输出是相当混乱的。然而,描述似乎表明,这是所需的:
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)输出:
[['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']]发布于 2022-08-03 06:25:50
尝试:
import itertools
named_list = ['Acosta Jose','Adams Zane','Arce Manuel']
print(sorted(list(map(', '.join, itertools.permutations(named_list, 2)))))结果:
['Acosta Jose, Adams Zane',
'Acosta Jose, Arce Manuel',
'Adams Zane, Acosta Jose',
'Adams Zane, Arce Manuel',
'Arce Manuel, Acosta Jose',
'Arce Manuel, Adams Zane']发布于 2022-08-03 06:29:05
这是我的看法:
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)结果:
[
['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注释将排列更改为组合。
https://stackoverflow.com/questions/73216912
复制相似问题