如何根据用户输入值对Python字典循环重排并输出第4项?
实现Python字典按指定行星循环重排并输出第4项
需求说明
现有一个键为1到6的字典,值是固定顺序的行星:
a = {'1':'saturn', '2':'venus', '3':'mars', '4':'jupiter', '5':'rahu', '6':'ketu'}
当用户输入某个行星(比如rahu)时,需要把该行星作为新字典1号键的值,之后依次跟随原字典中该行星之后的所有值,到末尾就从开头继续循环,最终输出新字典第4项的值。比如输入rahu后,新字典是:
{'1':'rahu', '2':'ketu', '3':'saturn', '4':'venus', '5':'mars', '6':'jupiter'}
此时第4项输出venus。
实现步骤
- 提取原字典的有序值列表:Python 3.7+的字典会保留插入顺序,直接用
list(a.values())就能得到原顺序的行星列表:['saturn', 'venus', 'mars', 'jupiter', 'rahu', 'ketu']。 - 定位目标行星的索引:用列表的
index()方法找到输入行星在原列表中的位置。 - 生成循环重排序列:从目标索引截取到列表末尾,再拼接列表开头到目标索引的部分,形成循环后的新序列。
- 构建新字典:把新序列的元素依次映射到
1到6的字符串键上。 - 输出第4项:直接取新字典中键为
'4'的值。
完整代码
# 原字典 a = {'1':'saturn', '2':'venus', '3':'mars', '4':'jupiter', '5':'rahu', '6':'ketu'} # 获取用户输入 planet = input('Enter planet : ') # 处理输入不存在的情况 original_planets = list(a.values()) if planet not in original_planets: print('输入的行星不存在,请重新输入') else: # 找到目标行星的起始索引 start_idx = original_planets.index(planet) # 生成重排后的行星列表 reordered_planets = original_planets[start_idx:] + original_planets[:start_idx] # 构建新字典 new_dict = {str(i+1): reordered_planets[i] for i in range(len(reordered_planets))} # 输出第4项 print('4th entry is : ') print(new_dict['4'])
验证示例
当输入rahu时:
- 原列表中
rahu的索引是4 - 重排后的列表为
['rahu', 'ketu', 'saturn', 'venus', 'mars', 'jupiter'] - 新字典的
'4'对应值为venus,符合预期。
内容的提问来源于stack exchange,提问作者sam
相关产品推荐
相关产品推荐

