Python 如何在某些字符串比其他字符串重的情况下最好地显示随机字符串

Python 如何在某些字符串比其他字符串重的情况下最好地显示随机字符串,python,dictionary,random,choice,Python,Dictionary,Random,Choice,我试图显示一个随机字符串,但希望某些字符串比其他字符串更频繁地出现。我目前的策略是使用嵌套字典,以便于更新和“选择”功能 msg_list = { 'msg_1': { 'msg': 'Hi', 'weight': 40, }, 'msg_2': { 'msg': 'hello', 'weight': 50, }, 'msg_3': { 'msg':

我试图显示一个随机字符串,但希望某些字符串比其他字符串更频繁地出现。我目前的策略是使用嵌套字典,以便于更新和“选择”功能

msg_list = {

    'msg_1': {
        'msg': 'Hi',
        'weight': 40,
         },

    'msg_2': {
        'msg': 'hello',
        'weight': 50,
         },

    'msg_3': {
        'msg': "What's up",
        'weight': 10,
        },
    }

message = choices(msg_list['msg'], msg_list['weight'])
string = message['msg']
这显然不起作用,我想我可以用一个循环来构建列表,但我很好奇是否有更快的方法来实现这一点。谢谢

你就快到了。 您只需要为random.choices的两个参数创建列表

msg_list = {

    'msg_1': {
        'msg': 'Hi',
        'weight': 40,
        },

    'msg_2': {
        'msg': 'hello',
        'weight': 50,
        },

    'msg_3': {
        'msg': "What's up",
        'weight': 10,
        },
    }

weights = [msg_list[key]['weight'] for key in msg_list.keys()]
messages = [msg_list[key]['msg'] for key in msg_list.keys()]


message = choices(messages, weights)
string = message[0]