繁体   English   中英

如何从列表字典中获取可能排列的列表

[英]How to get a list of possible permutations from a dictionary of lists

我需要从这样的列表字典中获得一个 output 像 X、Y、W avg # is x

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

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

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

这是我到目前为止所拥有的,

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

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

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]通过使用元组中的第二个元素获得最大数量,在这种情况下是数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM