Python 从由多个列表组成的字典中,从每个列表中选择一个元素
假设我有一本这样的列表词典:Python 从由多个列表组成的字典中,从每个列表中选择一个元素,python,python-3.x,list,dictionary,random,Python,Python 3.x,List,Dictionary,Random,假设我有一本这样的列表词典: lists= {'pet': ["dog", "cat", "parrot"], 'amount': [1,2,3], 'food': ["canned", "dry"]} {'amount': 2, 'food': 'canned', 'pet': 'cat'} 我想从每个列表中随机选取一个元素,结果如下: lists= {'pe
lists= {'pet': ["dog", "cat", "parrot"],
'amount': [1,2,3],
'food': ["canned", "dry"]}
{'amount': 2, 'food': 'canned', 'pet': 'cat'}
我想从每个列表中随机选取一个元素,结果如下:
lists= {'pet': ["dog", "cat", "parrot"],
'amount': [1,2,3],
'food': ["canned", "dry"]}
{'amount': 2, 'food': 'canned', 'pet': 'cat'}
使用Python实现它的最简单方法是什么?您尝试过吗
或者,如果要就地更新
列表
,请使用
for k, v in lists.items():
lists[k] = choice(v)
lists
# {'pet': 'parrot', 'amount': 3, 'food': 'canned'}
或者,如果您的python版本支持有序内置词典(>=cpython3.6,>=python3.7),您可以尝试使用
map
作为功能替代:
dict(zip(lists, map(choice, lists.values())))
# {'pet': 'parrot', 'amount': 2, 'food': 'dry'}
就我个人而言,我喜欢前两个选项。你试过了吗
或者,如果要就地更新
列表
,请使用
for k, v in lists.items():
lists[k] = choice(v)
lists
# {'pet': 'parrot', 'amount': 3, 'food': 'canned'}
或者,如果您的python版本支持有序内置词典(>=cpython3.6,>=python3.7),您可以尝试使用
map
作为功能替代:
dict(zip(lists, map(choice, lists.values())))
# {'pet': 'parrot', 'amount': 2, 'food': 'dry'}
就我个人而言,我喜欢前两个选项。使用随机模块,遍历字典,然后从每个值中选择一个随机元素?使用随机模块,遍历字典,然后从每个值中选择一个随机元素?~~对于第一个示例,
{k:choice(v)for k,v in list.items()}
可能会更干净一些。~~快点编辑!很好。第一个解决方案很完美,因为我希望能够生成多个结果,而不是修改列表。@acushner是的,很好,谢谢。我认为我以前的解决方案只有在列表很大并且我们不想使用.items()生成额外视图的情况下才更可取,但是这更干净,是的。额外视图有多大?我一直认为它只是一个迭代器……实际上,我会做一些研究,看看是否有什么有趣的东西。~~对于第一个例子,{k:choice(v)for k,v in list.items()}
可能会更干净一些。~~快编辑!很好。第一个解决方案很完美,因为我希望能够生成多个结果,而不是修改列表。@acushner是的,很好,谢谢。我认为我以前的解决方案只有在列表很大并且我们不想使用.items()生成额外视图的情况下才更可取,但是这更干净,是的。额外视图有多大?我一直以为它只是一个迭代器…实际上,我会做一些研究,看看我是否发现了什么有趣的东西。