解决:TypeError: Population must be a sequence or set. For dicts, use list(d).


TypeError: Population must be a sequence or set. For dicts, use list(d).



## 部 份 代 码

    def get_department(self):
        # 部门id进行替换
        sql = 'SELECT id FROM department WHERE company_id = %s AND is_deleted = 0 LIMIT 20'
        new_data = list(i['id'] for i in self.get_mysql_data(sql % self.company_id, is_more=True)).pop(0)
        return self.dom.handle_sample(new_data, 2)


if __name__ == '__main__':
    cc = {'department': '${department}'}
    aa = Parameter('TEST', 1)
    bb = aa.get_department()
    print(bb)
    

## 部 分 报 错 信 息

  File "F:/gitee/xzProject/apiProject/apiHandle/parameter.py", line 39, in get_department
    return self.dom.handle_sample(new_data, 2)
  File "F:\gitee\xzProject\apiProject\common\handle_random.py", line 49, in handle_sample
    var = sample(sequence, s)
  File "D:\Python\Python37\lib\random.py", line 317, in sample
    raise TypeError("Population must be a sequence or set.  For dicts, use list(d).")
TypeError: Population must be a sequence or set.  For dicts, use list(d).

具体分析如下:

## 部 分 代 码

new_data = list(i['id'] for i in self.get_mysql_data(sql % self.company_id, is_more=True)).pop(0)
return self.dom.handle_sample(new_data, 2)

上面这段代码实际我想实现的是,生成表达式完成后,删除序列中的第一值,然后再去执行random中的sample方法,从序列中获取两个值并继续保持list类型,实际没有实现

很尴尬…

报错原因:因为我取得值不是序列类型,所以出现的是类型错误,因为我的new_data 不是再是序列类型了,变成了pop取下标为0的值了

还是让我很尴尬…

具体修改如下:

## 部 分 代 码

    def get_department(self):
        # 部门id进行替换
        sql = 'SELECT id FROM department WHERE company_id = %s AND is_deleted = 0 LIMIT 20'
        new_data = list(i['id'] for i in self.get_mysql_data(sql % self.company_id, is_more=True))
        new_data.pop(0)
        return self.dom.handle_sample(new_data, 2)
        

运行结果如下:

F:\virtualEnvironment\venv\Scripts\python.exe F:/gitee/xzProject/apiProject/apiHandle/parameter.py
[95406, 95374]

Process finished with exit code 0

修改后,达到了我想要的数据类型和数据指定值。

具体总结:发生这样的错误还是因为粗心导致的,检查代码不细致,python的基础知识没有及时巩固。

最后就是,报错报红不要怕,细心、检查,总结、终将会越来越好


小小总结可能会解决你的问题,也可能解决不了你的问题,但还是希望对您有所帮助,感谢阅读,如有疑义,欢迎来扰!未完待续…

一直都在努力变好中,希望您也是,加油!

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值