如何用Python从给定列表生成随机反向首字母缩略词(Backronym)
解决方案
实现思路
先把单词列表按首字母分组,再遍历目标字符串的每个字符,从对应分组里随机挑选单词,最后按指定格式输出。
代码实现
import random x = 'STAR' y = ['super', 'sunny', 'talented', 'arrogant', 'apple', 'razor', 'rhyme'] # 按单词首字母小写分组,方便快速匹配 word_map = {} for word in y: key = word[0].lower() word_map.setdefault(key, []).append(word) # 遍历目标字符串生成结果 for char in x: target_key = char.lower() # 从对应分组随机选一个单词 picked_word = random.choice(word_map[target_key]) # 按要求格式输出,单词首字母大写 print(f"{char} for {picked_word.capitalize()}")
代码说明
- 分组处理:通过字典
word_map把列表y中的单词按首字母小写归类,比如所有以s开头的单词会被放到word_map['s']对应的列表里,后续可以快速定位到目标字母的候选单词。 - 随机选取:遍历字符串
x的每个字符,转成小写后作为键去字典里找对应单词列表,用random.choice()随机选中一个单词。 - 格式输出:用
capitalize()把选中的单词首字母大写,再按[大写字母] for [首字母大写单词]的格式打印。
运行代码后会生成符合要求的输出,每次运行结果可能不同(因为是随机选单词),比如某次运行会输出:
S for Sunny
T for Talented
A for Arrogant
R for Rhyme
内容的提问来源于stack exchange,提问作者Mohd Suhail Athar
相关产品推荐
相关产品推荐

