![](/img/trans.png)
[英]Get all possible permutations of lists from a single list without duplicates
[英]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)]]
然后我使用max
和key= lambda i: i[1]
通过使用元组中的第二个元素获得最大数量,在这种情况下是数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.