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

Python列表嵌套字典随机调用follower_count值异常求助

问题分析与修复方案

核心问题点

  • 随机数范围错误:原代码中random.randint(0, length)会生成0到6(含6)的整数,但列表data只有6个元素,合法索引是0-5。当生成0时,number-1得到-1,Python会取列表最后一个元素;生成6时,number-1得到5(合法),这就导致随机索引对应的结果不符合预期,出现“粉丝数随机选取”的现象。
  • 变量名冲突:原代码先定义了number()函数,后续又将变量number赋值为随机数,覆盖了函数本身,后续无法再调用该函数,属于不良编码习惯。
  • 越界访问:最后一行print(data[11]['follower_count'])访问索引11,远超出列表的合法索引范围(0-5),会直接抛出IndexError异常。

修复后的代码

import random
data = [
    {
        'name': 'Instagram',
        'follower_count': 346,
        'description': 'Social media platform',
        'country': 'United States'
    },
    {
        'name': 'Cristiano Ronaldo',
        'follower_count': 215,
        'description': 'Footballer',
        'country': 'Portugal'
    },
    {
        'name': 'Ariana Grande',
        'follower_count': 183,
        'description': 'Musician and actress',
        'country': 'United States'
    },
    {
        'name': 'Dwayne Johnson',
        'follower_count': 181,
        'description': 'Actor and professional wrestler',
        'country': 'United States'
    },
    {
        'name': 'Selena Gomez',
        'follower_count': 174,
        'description': 'Musician and actress',
        'country': 'United States'
    },
    {
        'name': 'Kylie Jenner',
        'follower_count': 172,
        'description': 'Reality TV personality and Self-Made Billionaire',
        'country': 'United States'
    }
]

def comparison(followers_A, followers_B):
    return followers_A if followers_A > followers_B else followers_B

def generate_random_index():
    '''生成合法的列表随机索引'''
    return random.randint(0, len(data)-1)

def get_follower_count(index):
    '''根据索引获取对应粉丝数'''
    return data[index]['follower_count']

length = len(data)
print(f"{length} 是列表的长度")
random_idx = generate_random_index()
print(f"{random_idx} 是随机索引")
follower_count = get_follower_count(random_idx)
print(f"{follower_count} 是对应的粉丝数")
# 如需测试特定元素,可使用合法索引,比如:
# print(data[0]['follower_count'])

修复说明

  1. 修正随机数范围:直接生成0到len(data)-1的整数,也就是列表的合法索引,无需再做减1操作,彻底避免负索引和越界问题。
  2. 语义化命名:将原函数number()改名为generate_random_index(),follower()改名为get_follower_count(),同时变量名也更清晰,避免了函数与变量的命名冲突。
  3. 移除错误代码:删除了越界访问的代码,如需测试特定元素,可添加合法索引的打印语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:13:24