【问题标题】:How to get a list of possible permutations from a dictionary of lists如何从列表字典中获取可能排列的列表
【发布时间】:2020-12-05 00:33:21
【问题描述】:

我需要从这样的列表字典中获取 X、Y、W avg # is x 这样的输出

dict = {
    'X': [65, 86, 54],
    'W': [87, 99, 57],
    'Y': [83, 82, 84]
}

输出应该是值列表中具有最高平均值的可能排列,以及实现该值所需的键的顺序,每个键只能使用一次。

我尝试了一些解决方案,但都没有任何效果。

这是我目前所拥有的,

list = []
for element in zip(dict, *dict.values()):
   list.append(element)

这只是创建一个列表列表,其中键是列表的开头,然后是每个值中的所有数字作为列表的新条目,例如: X,65,86,54 现在我需要找到三个键:值对的每个可能排列,其中每个值中的列表被组合以找到具有最高平均值的路由,例如 87、86、84

【问题讨论】:

  • 向我们展示您的尝试?给我们一个示例输出,提供minimal reproducible example 并查看How to Ask
  • 我已经更新了帖子,抱歉,这是我第一次在 stackoverflow 上发帖,希望可以。我真的不知道从哪里继续,所以我不能添加太多信息。
  • 您需要显示所有可能的排列还是只提供具有最高值排列的列表
  • 以及87, 86, 84 的最高平均值是多少

标签: python list dictionary permutation


【解决方案1】:
dictt = {
    'X': [65, 86, 54],
    'W': [87, 99, 57],
    'Y': [83, 82, 84]
}



perm = [max([(key,value)  for value in lst],key= lambda i : i[1])for key,lst in dictt.items()]

print(perm)

>>> [('X', 86), ('W', 99), ('Y', 84)]

[(key,value) for value in lst])for key,lst in dictt.items() 这一行返回一个列表列表,其中所有值都与其键配对,所以

[[('X', 65), ('X', 86), ('X', 54)], 
[('W', 87), ('W', 99), ('W', 57)], 
[('Y', 83), ('Y', 82), ('Y', 84)]]

然后我使用maxkey= lambda i : i[1],在这种情况下,通过使用元组中的第二个元素获得最大数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-26
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多