创建一个字典列表,遍历输入值列表

cngwdvgl  于 2021-07-13  发布在  Java
关注(0)|答案(3)|浏览(384)

我正在尝试创建一个基于不同输入列表的字典列表。
示例:输入

  1. appetizer = ['soup', 'salad']
  2. entree = ['steak', 'chicken', fish']
  3. dessert = ['ice cream', 'flan', cake']
  4. dict = {appetizer = [], entree = [], dessert = []}
  5. dinner_options = []

从这里开始,我将创建一个包含所有可能晚餐选项的词典列表
输出

  1. dinner_options = [{appetizer = 'soup', entree = 'steak', dessert = 'ice cream'},
  2. {appetizer = 'soup', entree = 'steak', dessert = 'flan'},
  3. {appetizer = 'soup', entree = 'steak', dessert = 'cake'},
  4. {appetizer = 'soup', entree = 'chicken', dessert = 'ice cream'},
  5. {appetizer = 'soup', entree = 'chicken', dessert = 'flan'},
  6. {appetizer = 'soup', entree = 'chicken', dessert = 'cake'},
  7. {appetizer = 'soup', entree = 'fish', dessert = 'ice cream'},
  8. {appetizer = 'soup', entree = 'fish', dessert = 'flan'},
  9. {appetizer = 'soup', entree = 'fish', dessert = 'cake'},
  10. {appetizer = 'salad', entree = 'steak', dessert = 'ice cream'},
  11. {appetizer = 'salad', entree = 'steak', dessert = 'flan'},
  12. {appetizer = 'salad', entree = 'steak', dessert = 'cake'},
  13. {appetizer = 'salad', entree = 'chicken', dessert = 'ice cream'},
  14. {appetizer = 'salad', entree = 'chicken', dessert = 'flan'},
  15. {appetizer = 'salad', entree = 'chicken', dessert = 'cake'},
  16. {appetizer = 'salad', entree = 'fish', dessert = 'ice cream'},
  17. {appetizer = 'salad', entree = 'fish', dessert = 'flan'},
  18. {appetizer = 'salad', entree = 'fish', dessert = 'cake'}]

基本上,在最后我试图得到一个列表,其中包含输入中提供的列表(参数)的所有排列。

busg9geu

busg9geu1#

你只需要遍历你的列表,并将可能性附加到你的列表中 dinner_options 数组。

  1. appetizer = ['soup', 'salad']
  2. entree = ['steak', 'chicken', 'fish']
  3. dessert = ['ice cream', 'flan', 'cake']
  4. dinner_options = []
  5. for ap in appetizer:
  6. for en in entree:
  7. for de in dessert:
  8. dinner_options.append({ "appetizer": ap, "entree": en, "dessert": de })
  9. print(dinner_options)

然后它就会显示出来

  1. [{'appetizer': 'soup', 'entree': 'steak', 'dessert': 'ice cream'}, {'appetizer': 'soup', 'entree': 'steak', 'dessert': 'flan'}, {'appetizer': 'soup', 'entree': 'steak', 'dessert': 'cake'}, {'appetizer': 'soup', 'entree': 'chicken', 'dessert': 'ice cream'}, {'appetizer': 'soup', 'entree': 'chicken', 'dessert': 'flan'}, {'appetizer': 'soup', 'entree': 'chicken', 'dessert': 'cake'}, {'appetizer': 'soup', 'entree': 'fish', 'dessert': 'ice cream'}, {'appetizer': 'soup', 'entree': 'fish', 'dessert': 'flan'}, {'appetizer': 'soup', 'entree': 'fish', 'dessert': 'cake'}, {'appetizer': 'salad', 'entree': 'steak', 'dessert': 'ice cream'}, {'appetizer': 'salad', 'entree': 'steak', 'dessert': 'flan'}, {'appetizer': 'salad', 'entree': 'steak', 'dessert': 'cake'}, {'appetizer': 'salad', 'entree': 'chicken', 'dessert': 'ice cream'}, {'appetizer': 'salad', 'entree': 'chicken', 'dessert': 'flan'}, {'appetizer': 'salad', 'entree': 'chicken', 'dessert': 'cake'}, {'appetizer': 'salad', 'entree': 'fish', 'dessert': 'ice cream'}, {'appetizer': 'salad', 'entree': 'fish', 'dessert': 'flan'}, {'appetizer': 'salad', 'entree': 'fish', 'dessert': 'cake'}]
展开查看全部
62lalag4

62lalag42#

您可以使用itertools.product:

  1. from itertools import product
  2. appetizer = ['soup', 'salad']
  3. entree = ['steak', 'chicken', 'fish']
  4. dessert = ['ice cream', 'flan', 'cake']
  5. # Here we create an iterable from the objects we want to obtain
  6. # different combinations.
  7. to_combine = (appetizer, entree, dessert)
  8. # Next, we need to define the order in which those appear
  9. # as those will be used as the keys in the individual
  10. # dictionary objects.
  11. order = 'appetizer,entree,dessert'.split(',')
  12. dinner_options = list()
  13. # Now we loop over the unpacked tuple and build each individual
  14. # dictionary.
  15. for items in product(*to_combine):
  16. # This creates the individual objects which are of the form:
  17. # `{'appetizer': '<a>', 'entree': '<e>', 'dessert': '<d>'}
  18. d = {key:value for key, value in zip(order, items)}
  19. dinner_options.append(d)

这将产生所需的输出。

展开查看全部
n8ghc7c1

n8ghc7c13#

我认为这是最明显和最耗时的答案

  1. appetizer = ['soup', 'salad']
  2. entree = ['steak', 'chicken', 'fish']
  3. dessert = ['ice cream', 'flan', 'cake']
  4. # dict = {appetizer = [], entree = [], dessert = []}
  5. dinner_options = []
  6. for start in appetizer:
  7. for mid in entree:
  8. for end in dessert:
  9. data = dict(appetizer=start, entree=mid, dessert=end)
  10. dinner_options.append(data)
  11. print(dinner_options)

相关问题