python 我被困在调用字典中的一个键的值,这个键在列表中,但带有随机变量,它的输出与列表中的不一样

bxfogqkk  于 2023-10-14  发布在  Python
关注(0)|答案(3)|浏览(91)

我试着做一个随机数,然后这个随机数将被用来调用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'])
omqzjyyz

omqzjyyz1#

您的代码存在多个问题:
1.您对函数和变量都使用了相同的名称numberfollower,这可能会导致意外的行为。
1.在data[number-1]['follower_count']中,如果从0开始生成随机数,则-1可能有问题。
1.您试图访问data[11]['follower_count'],但您提供的data列表较短(6个元素),因此没有第11个元素将导致IndexError
1.在数字函数中有一个不一致;它生成一个从0length的随机整数,但列表索引从0开始,一直到length - 1
1.函数comparison()未使用(死代码)。
下面是解决了上述问题的重构代码:

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")
vfh0ocws

vfh0ocws2#

如果使用random.choice()从列表中选择[random]字典,事情会变得更简单。然后,您可以对所选字典执行任何操作:

# pseudo-randomly select a dictionary from the list
e = random.choice(data)
# print the follower_count
print(e['follower_count'])
cdmah0mi

cdmah0mi3#

我理解你的编码如下。你有一个包含几个字典的列表。在列表中的字典总数中生成一个随机数。你的程序应该获取列表中生成的随机数的数据。从所选的字典中,它应该返回追随者的姓名和数量(除此之外,它还应该打印列表的长度和所选的随机数。希望我的理解是正确的。

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'
}
]

length=len(data)
number = random.randint(0,length)
dct = data[number-1]
Name = dct['name']
follower_count = dct['follower_count']
print(f"{length} its the length of list")
print(f"{number} its random number")
print(f"{Name} is his/her name")
print(f"{follower_count} are number of followers")

希望这将是有用的。一个小小的建议只是个建议。将程序编写为函数,而不是打印输出,返回所需的值。您可以在as和when之间使用print()语句来检查流是否正确(即检查不同级别的输出)。

相关问题