当前位置: 首页 > 知识库问答 >
问题:

从字典中找出所有组合[关闭]

长孙章横
2023-03-14

在python中,我有以下输入:

{Alex:[cake,meet] , Yulia:[apple , burger] , Josh: [salad]}

产出-这3个人的所有食物组合:

[{Alex:cake , Yulia:apple , Josh:salad} , {Alex:cake , Yulia:burger , Josh:salad} , {Alex:meet , Yulia:apple , Josh:salad} , {Alex:meet , Yulia:burger , Josh:salad}]

主要的问题是我不知道每个人的人数和食物的数量,所以我猜这是递归的。

共有2个答案

林辰钊
2023-03-14

使用itertools.product,然后用原始字典中的键压缩每个生成的元组。

import itertools
data = {"Alex":["cake","meet"] , "Yulia":["apple" , "burger"] , "Josh": ["salad"]}
print([dict(zip(data, values)) for values in itertools.product(*data.values())])
汪皓
2023-03-14

您要查找的是映射回字典键的字典值(将每个人的一个水果组合在一起)的乘积,以形成组合字典:

d = {'Alex':['cake','meet'] , 'Yulia':['apple' , 'burger'] , 'Josh': ['salad']}

from itertools import product

result = [dict(zip(d,p)) for p in product(*d.values())]

print(result)
[{'Alex': 'cake', 'Yulia': 'apple', 'Josh': 'salad'}, 
 {'Alex': 'cake', 'Yulia': 'burger', 'Josh': 'salad'}, 
 {'Alex': 'meet', 'Yulia': 'apple', 'Josh': 'salad'}, 
 {'Alex': 'meet', 'Yulia': 'burger', 'Josh': 'salad'}]
 类似资料:
  • 在python中,我有以下输入: 输出-这3个人的所有食物组合: 主要的问题是我不知道每个人的人数和食物的数量,所以我猜这是递归的。

  • 问题内容: 这可能是一个愚蠢的问题,但是考虑到以下指示: 我将如何获得此列表: 换句话说,我希望字典中两个键/值对的所有组合都不能替换,而与顺序无关。 问题答案: 一种解决方案是使用: 编辑 :由于受欢迎的需求,这里是Python 3.x版本:

  • 问题内容: 我有一本这样的字典: 基本上是一本具有嵌套列表,字典和字符串的字典,其深度是任意的。 遍历此方法以提取每个“ id”键的值的最佳方法是什么?我想实现与“ // id”之类的XPath查询等效的功能。“ id”的值始终是一个字符串。 因此,从我的示例中,我需要的输出基本上是: 顺序并不重要。 问题答案: 我发现此Q / A非常有趣,因为它为同一问题提供了几种不同的解决方案。我采用了所有这

  • 问题内容: 我使用NSUserDefaults词典来存储诸如高分等基本信息,以便在用户关闭应用程序时不会丢失数据。无论如何,我使用: 存储数据。例如,如果我想存储新的高分,那么我会这样做: 然后,如果我想检索高分,我会做: 反正问题是,我储存很多其他的事情,因为你到店里,,等我有什么方法来执行删除所有键,以便成为NSUserDefaults的像拳头时我启动应用程序? 我正在寻找类似的东西: 或者也

  • 问题内容: 我有一个问题困扰了一段时间(头冷也无济于事!),基本上我有一个PHP数组,看起来像下面的例子: 而且我希望能够由此生成一个表格,其中包含这些表格的所有可能组合,但无需重复任何组合(无论其位置如何),因此例如 但是我希望它能够处理尽可能多的不同数组。 问题答案: 这称为“笛卡尔积”,数组http://php.net/manual/en/ref.array.php上的php手册页显示了一些

  • 我有来自服务器的2个不同的响应,具有相同的键,我将其转换为字典: 对我来说,dict2 中存储什么值并不重要,我需要 dict2 在 dict1 中找到相同的键,并将 dict1 中的完整项目放入新的 dict3 字典中。 输出应该是这样的: 粗略地说,dict2中的键是指针,dict1中的哪些项目可以放入dict3中 解决方案不是def()对我来说很重要