Python在字典中获取带权重的随机值实现方式

一、前言

python在数组中随机取值有现成的方法,但是要给每个随机值被取到的概率加权重的话,可以参考下面这个方法

二、实现方式

import random

def random_with_weight(data_dict):
    sum_wt = sum(data_dict.values())     # 计算权重和 sum_wt
    ra_wt = random.uniform(0, sum_wt)    # 随机获取 0-sum_wt 之间的一个浮点数 ra_wt
    cur_wt = 0
    for key in data_dict.keys():
        cur_wt += data_dict[key]        # 遍历并累加当前权重值
        if ra_wt <= cur_wt:             # 当随机数 <= 当前权重和时,返回权重对应的key
            return key

if __name__ == '__main__':
    # 权重字典
    data_dict = {'历史': 1, '人文': 2, '科学': 8}
    # 取十次测试结果
    for _ in range(10):
        value = random_with_weight(data_dict)
        print(value)
        # 历史
        # 科学
        # 科学
        # 科学
        # 科学
        # 科学
        # 人文
        # 科学
        # 历史
        # 科学

到此这篇关于Python在字典中获取带权重的随机值的文章就介绍到这了,更多相关Python字典权重随机值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python随机值生成的常用方法总结

    目录 一.随机整数 二.随机浮点数 三.随机字符串 四.随机数使用到的一些算法 一.随机整数 1.包含上下限:[a, b] import random #1.随机整数:包含上下限:[a, b] for i in range(10): print(random.randint(0,5),end=" | ") 查看运行结果: 2.不包含上限:[a, b) import random #2.随机整数:不包含上限:[a, b) for i in range(10): print(random.

  • Python生成不重复随机值的方法

    本文实例讲述了Python生成不重复随机值的方法.分享给大家供大家参考.具体分析如下: 这里从一列表中,生成不重复的随机值 算法实现如下: import random total = 100 li = [i for i in range(total)] res = [] num = 20 for i in range(num): t = random.randint(i,total-1) res.append(li[t]) li[t], li[i] = li[i], li[t] print re

  • Python在字典中获取带权重的随机值实现方式

    一.前言 python在数组中随机取值有现成的方法,但是要给每个随机值被取到的概率加权重的话,可以参考下面这个方法 二.实现方式 import random def random_with_weight(data_dict): sum_wt = sum(data_dict.values()) # 计算权重和 sum_wt ra_wt = random.uniform(0, sum_wt) # 随机获取 0-sum_wt 之间的一个浮点数 ra_wt cur_wt = 0 for key in d

  • Python从单元素字典中获取key和value的实例

    之前写代码很多时候会遇到这么一种情况:在python的字典中只有一个key/value键值对,想要获取其中的这一个元素还要写个for循环获取. 网上搜了一下,发现还有很多简单的方法: 方法一 d = {'name':'haohao'} (key, value), = d.items() 方法二 d = {'name':'haohao'} key = list(d)[0] value = list(d.values())[0] 方法三 d = {'name':'haohao'} key, = d

  • 教你用python从日期中获取年、月、日和星期等30种信息

    目录 1 计算日期的年月日时分秒,星期,周次… 2计算一年中的第几天, 第几个10分钟, 日期转数值 3判断日期是否闰年,年初年末,月初月末… 4字符串时段,季节 5for循环快捷计算 6时间间隔天数计算 补充:Python日期获取今天及昨天的年月日等信息 总结 这次介绍日期数据处理. 用python中的方法对日期数据进行处理, 我们可以获取很多有用的信息, 比如年月日,星期,周次,季度等, 这里分享工作和数据竞赛30余种常用的转换方法. 1 计算日期的年月日时分秒,星期,周次… 用pandas

  • Python字典中的键映射多个值的方法(列表或者集合)

    一个字典就是一个键对应一个单值的映射.如果你想要一个键映射多个值,那么你就需要将这多个值放到另外的容器中, 比如列表或者集合里面.比如,你可以像下面这样构造这样的字典: d = { 'a' : [1, 2, 3], 'b' : [4, 5] } e = { 'a' : {1, 2, 3}, 'b' : {4, 5} } 选择使用列表还是集合取决于你的实际需求.如果你想保持元素的插入顺序就应该使用列表, 如果想去掉重复元素就使用集合(并且不关心元素的顺序问题). 你可以很方便的使用 collect

  • python链表类中获取元素实例方法

    1.append方法 向链表添加元素后.在链表中,不能通过索引来定位每个元素,只能在列表中定位.链表元素的.next方法需要被持续调用,以获得下一个元素,并最终获得最后一个元素.最后一个元素的.next属性中将指向新添加的元素. def append(self, new_element): current = self.head if self.head: while current.next: current = current.next current.next = new_element

  • 浅谈在页面中获取到ModelAndView绑定的值方法

    springMVC中通过ModelAndView进行后台与页面的数据交互,那么如何在页面中获取ModelAndView绑定的值呢? 1.在JSP中通过EL表达式进行获取(比较常用) 后台: ModelAndView model = new ModelAndView(); model.addObject("name","Jims"); JSP:在JSP中直接使用${name }进行获取 姓名:${name } 2.通过JSP内置对象进行获取 后台: ModelAndV

  • layui从数据库中获取复选框的值并默认选中方法

    如下: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="../../../static/js/css/layui.css" rel=

  • JavaScript中获取Radio被选中的值

    原理就是:一般使用遍历的方法,判断每个Radio是否被选中,如果是,再取其值. <form id="userlist" method="post" action="option.php"> <input type="radio" name="userid" value="1">1 <input type="radio" name=&quo

  • python解决字典中的值是列表问题的方法

    问题:查找一些英文词在哪些小句中出现了,当然是用python来实现,当然是用字典,但是怎么让一个key对应一个 类型为列表的value,直接用列表的append()是不行的,比如dic[key].append(value),因为解释器并不知道 dic[key]的类型,当时赶时间,用了一个折衷的方案,就是先用value连成一个str,最后用str.split()作一个转换,生成一个列表. 看了python cookbook,上面正好有一个recipe讲到如何处理这样的问题,好了,揭晓答案吧! (1

  • js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解

    前言 在阅读本文前,相信大家应该都有所了解,在js获取键盘按下的键值有:event.keyCode.event.charCode和event.which. 其中: 谷歌浏览器:对event.keyCode.event.charCode和event.which都兼容. 火狐浏览器:对event.keyCode部分键值有效,如上下左右键(37,38,39,40),enter键(13),PgUp(33),PgDn(34)等部分有效,对数字键,字母键无效. event.which也是部分键值有效,如字母

随机推荐