Python - 根据类型选择随机消息的最有效方法

时间:2015-07-11 21:18:10

标签: python django list dictionary random

我有一些(数百条)消息,其类型为:

Type Message
1    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
1    Maecenas eu risus a arcu rutrum vehicula vel in neque.
1    Curabitur ante sapien, cursus nec diam non, porttitor sagittis leo.
2    Nunc et nisi nec ligula placerat accumsan.
2    In lacinia, neque rutrum aliquet luctus, odio ligula accumsan risus.
3    ...
3    ...
...  ...

我想从类型1消息中选择随机消息,或者输入2条消息等。我想构建一种有效的方法。所以我的问题是:

我应该如何存储这些消息?使用列表,字典,txt或DB表(我也使用Django)。消息将是静态的。我不会定期更改或编辑它们。可能在将来购买我需要使用其他语言的翻译。

如何根据类型选择RANDOM消息?即“带有类型1的随机消息”。

全心全意,

1 个答案:

答案 0 :(得分:2)

将您的消息存储在Django模型中,然后使用random order

选择您的消息
from django.db import models    


class Message(models.Model):
    type = models.IntegerField(default=1)
    message_text = models.CharField(max_length=500)

    @classmethod
    def random_by_type(cls, type_number):
        return cls.objects.filter(type=type_number).order_by('?').first()

我已将其设为类方法,因此您可以选择随机消息:

random_message = Message.random_by_type(1)

您当然可以使用静态设置执行此操作:

import random

messages = {
    1: ['Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
        'Maecenas eu risus a arcu rutrum vehicula vel in neque.'
        'Curabitur ante sapien, cursus nec diam non, porttitor sagittis leo.',
    ],
    2: ['Nunc et nisi nec ligula placerat accumsan.',
        'In lacinia, neque rutrum aliquet luctus, odio ligula accumsan risus.',
    ],
    3: ['....'],
    # ...
}

def random_by_type(type_number):
    return random.choice(messages[type_number])

但为什么忽略使用Django管理界面来管理消息的可能性呢?