我想从列表中获得随机项目,也不想在random.choice()
时考虑某些项目。下面是我的数据结构
x=[
{ 'id': 1, 'version':0.1, 'ready': True }
{ 'id': 6, 'version':0.2, 'ready': True }
{ 'id': 4, 'version':0.1, 'ready': False }
{ 'id': 35, 'version':0.1, 'ready': False }
{ 'id': 45, 'version':0.1, 'ready': False }
{ 'id': 63, 'version':0.1, 'ready': True }
{ 'id': 34, 'version':0.1, 'ready': True }
{ 'id': 33, 'version':0.1, 'ready': True }
]
我可以使用random.choice(x)
获得随机物品。但是有什么办法可以考虑'ready': True
时项的random.choice()
属性。
或者有任何简单的技巧可以实现这一目标?
注意:我想使用python内置模块来避免类似numpy
等的依赖关系。
答案 0 :(得分:0)
您可以从元素符合条件的列表中进行选择:
random.choice([elem for elem in x if elem["ready"]])
答案 1 :(得分:0)
只需生成一个具有列表理解功能的 new 列表,然后从中选择要随机选择的项目即可。
ready_items = [d for in x if d["ready"]]
random.choice(ready_items)
您可以将两者合并为一个表达式:
random.choice([d for in x if d["ready"]])
但是如果您要多次使用random.choice()
,则只生成一次ready_items
会很有帮助。
答案 2 :(得分:0)