我陷入了调用字典内部键的值的困境,该字典位于列表内部但带有随机变量。它的输出与列表中的不一样

问题描述 投票:0回答:1

我尝试制作一个随机数,然后该随机数将用于从列表数据内部的字典中调用 follower_count ,但我无法为随机生成的数字获得相同的关注者,甚至不接近,关注者也被挑选出来随机

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):
    if followers_A>followers_B:
        return followers_A
    else:
        return followers_B

def number():
    '''Generates Random numbers'''
    return random.randint(0,length)
def follower(number):
    '''Calls the follower in the list'''
    return data[number-1]['follower_count']
length=len(data)
print(f"{length} its the length of list")
print(f"{number()} its random number")
number=number()
follower = follower(number)
print(f"{follower} its followers")
print(data[11]['follower_count'])
python list dictionary random key-value
1个回答
0
投票

您的代码存在多个问题:

  1. 您对函数和变量使用相同的名称
    number
    follower
    ,这可能会导致意外行为。
  2. 你的功能
    comparison()
    似乎根本没有在使用。
  3. data[number-1]['follower_count']
    中,如果随机数是从
    -1
    开始生成的,则
    0
    可能会出现问题。
  4. 您正在尝试访问
    data[11]['follower_count']
    ,但您提供的
    data
    列表较短(6 个元素),因此没有第 11 个元素会导致
    IndexError
  5. 数字功能不一致;它生成一个从
    0
    开始到
    length
    的随机整数,但列表索引从
    0
    开始一直到
    length - 1

这是解决上述问题的重构代码:

import random

data = [
    # ... (same as your data)
]

def generate_random_number(length):
    '''Generates Random numbers within range of list length'''
    return random.randint(0, length - 1)

def get_follower_count(index):
    '''Calls the follower in the list by index'''
    return data[index]['follower_count']

list_length = len(data)
random_index = generate_random_number(list_length)

follower_count = get_follower_count(random_index)

print(f"{list_length} is the length of list")
print(f"{random_index} is the random number")
print(f"{follower_count} is the follower count")
© www.soinside.com 2019 - 2024. All rights reserved.