Как лучше всего воспроизвести случайную строку, когда некоторые строки тяжелее других - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь отобразить случайную строку, но хотел бы, чтобы некоторые строки встречались чаще, чем другие. Моя текущая стратегия заключается в использовании вложенных словарей для простоты обновления и функции «выбора».

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

Это, очевидно, не работает, и я думаю, что я мог бы создать списки с помощью al oop, но я мне интересно, если есть более быстрый способ сделать это. Спасибо!

1 Ответ

1 голос
/ 26 апреля 2020

Ты почти у цели. Вам просто нужно создать списки для 2-х параметров 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]
...