You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现字母列表循环与1-100数字配对生成完整字典?

问题与解决方案

问题

我需要用Python实现:将1-100的数字依次与a-z循环配对,生成键值对。但当前代码只能生成前26个数字的配对,代码如下:

import string

alphabet = list(string.ascii_lowercase)
number = list(range(1,101))

res = dict(zip(alphabet, number))
print(res)

我想要的配对逻辑是:a对应1,b对应2…z对应26,接着a对应27,直到v对应100(示意的字典结构中重复键仅作逻辑展示,实际字典键具有唯一性)。

问题原因

  1. zip()函数会以传入的最短迭代器长度为准,字母表只有26个元素,因此只完成了前26个数字的配对。
  2. Python字典的键是唯一的,如果直接生成字典,后续重复的字母键会覆盖之前的值,无法同时保留'a':1和'a':27这类重复键的条目。

解决方案

方法1:用itertools.cycle循环字母表

itertools.cycle可以无限循环迭代字母表,配合zip就能覆盖所有数字。如果需要保留所有配对关系,生成键值对列表;如果只需要每个字母对应最后一次配对的数字,转成字典即可:

import string
from itertools import cycle

alphabet = list(string.ascii_lowercase)
numbers = list(range(1, 101))

# 生成所有配对的键值对列表(保留全部配对关系)
all_pairs = list(zip(cycle(alphabet), numbers))
print(all_pairs)

# 生成字典(每个字母保留最后一次配对的数字)
final_dict = dict(all_pairs)
print(final_dict)

方法2:手动计算字母索引

无需额外库,通过数字计算对应的字母位置:

import string

alphabet = list(string.ascii_lowercase)
numbers = list(range(1, 101))

final_dict = {}
for num in numbers:
    # 计算对应字母的索引:(数字-1)取模26,适配从1开始的数字序列
    char_index = (num - 1) % len(alphabet)
    final_dict[alphabet[char_index]] = num

print(final_dict)

拓展:保留字母对应的所有数字

如果需要记录每个字母对应的全部数字(比如a对应1、27、53、79),可以用字典套列表的结构:

import string

alphabet = list(string.ascii_lowercase)
numbers = list(range(1, 101))

result = {char: [] for char in alphabet}
for num in numbers:
    char_index = (num - 1) % len(alphabet)
    result[alphabet[char_index]].append(num)

print(result)

内容的提问来源于stack exchange,提问作者Shashank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 01:02:36