[英]Generate all possible permutation of multiple lists and access them in python
I have two permuted lists, one of them contains string-keys and other corresponding values: 我有两个排列的列表,其中一个包含字符串键和其他对应的值:
list1 清单1
('inputData1', 'targetData1')
('inputData1', 'targetData2')
('inputData1', 'targetData3')
('inputData2', 'targetData1')
('inputData2', 'targetData2')
('inputData2', 'targetData3')
...
list2
for corresponding inputData1
and targetData1
对应于inputData1
和targetData1
list2
list2 list2
(array([[ 30.1678, -173.569 , 725.724 ],
[ 29.9895, -173.34 , 725.76 ],
[ 29.9411, -173.111 , 725.768 ],
[ 29.9306, -173.016 , 725.98 ],
[ 29.6754, -172.621 , 725.795 ],
[ 29.5277, -172.274 , 725.903 ],
[ 29.585 , -171.978 , 726.111 ],
[ 29.4114, -171.507 , 726.188 ],
[ 29.3951, -170.947 , 726.173 ],
[ 29.3577, -170.196 , 726.384 ],
[ 29.3594, -169.771 , 726.52 ]]),
array([[ 14.8016, -175.911 , 779.752 ],
[ 14.7319, -175.483 , 779.504 ],
[ 14.5022, -175.087 , 779.388 ],
[ 14.4904, -174.576 , 779.416 ],
[ 14.4881, -174.058 , 779.452 ],
[ 14.1612, -173.558 , 779.459 ],
[ 14.0831, -172.938 , 779.675 ],
[ 13.9405, -172.117 , 780.146 ],
[ 13.8627, -171.233 , 780.568 ],
[ 14.056 , -170.34 , 780.876 ],
[ 14.1102, -169.477 , 781.265 ]]))
To generate permutations for keys and values, I use itertools.product()
function: 要生成键和值的排列,我使用itertools.product()
函数:
strIdx= []
for strIdx in itertools.product(inputDataNameStrings, targetDataNameStrings):
print('dataNameIndex_Pairs:', strIdx)
valIdx= []
for valIdxin itertools.product(inputDataValue, targetDataValue):
print('dataValueIndex_Pairs:\n', self.valIdx)
My goal is to get again a permuted output from above permutations and access each item over key: 我的目标是再次从上述排列中获得排列输出,并通过键访问每个项目:
list3=
(('inputData1' [inputData1ValueArray]), ('targetData1' [targetData1ValueArray]))
(('inputData1' [inputData1ValueArray]), ('targetData2' [targetData2ValueArray]))
(('inputData1' [inputData1ValueArray]), ('targetData3' [targetData3ValueArray]))
(('inputData2' [inputData2ValueArray]), ('targetData1' [targetData1ValueArray]))
How can I do this? 我怎样才能做到这一点? Thanks for any suggestion 感谢您的任何建议
I'm not really sure what you want here, but is something like this what your after: 我不太确定您在这里想要什么,但是您想要的是这样的东西:
list1= [('inputData1', 'targetData1'),
('inputData1', 'targetData2'),
('inputData1', 'targetData3'),
('inputData2', 'targetData1'),
('inputData2', 'targetData2'),
('inputData2', 'targetData3')]
list2 = [[i] for i in range(len(list1) * 2)]
# [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11]]
list2 = [tuple(list2[i:i+2]) for i in range(0, len(list2), 2)]
# [([0], [1]), ([2], [3]), ([4], [5]), ([6], [7]), ([8], [9]), ([10], [11])]
print([((x1, y1), (x2, y2)) for (x1, x2), (y1, y2) in zip(list1, list2)])
Which Outputs: 哪些输出:
[(('inputData1', [0]), ('targetData1', [1])),
(('inputData1', [2]), ('targetData2', [3])),
(('inputData1', [4]), ('targetData3', [5])),
(('inputData2', [6]), ('targetData1', [7])),
(('inputData2', [8]), ('targetData2', [9])),
(('inputData2', [10]), ('targetData3', [11]))]
Since i don't have those variable values so i modified a little , you don't have to modify the list2 if you have those values already defined somewhere : 由于我没有这些变量值,因此我做了一些修改,如果您已经在某个地方定义了这些值,则不必修改list2:
list1=[('inputData1', 'targetData1'),
('inputData1', 'targetData2'),
('inputData1', 'targetData3'),
('inputData2', 'targetData1'),
('inputData2', 'targetData2'),
('inputData2', 'targetData3')]
list2=[['inputData1ValueArray'], ['targetData1ValueArray'],
['inputData1ValueArray'], ['targetData2ValueArray'],
['inputData1ValueArray'], ['targetData3ValueArray'],
['inputData2ValueArray'], ['targetData1ValueArray'],
['inputData2ValueArray'], ['targetData2ValueArray'],
['inputData2ValueArray'], ['targetData3ValueArray']]
final_=[]
for i in list1:
for j in list2:
sub_={}
if i[0] in j[0]:
sub_[i[0]]=j[0]
elif i[1] in j[0]:
sub_[i[1]]=j[0]
if sub_:
final_.append(sub_)
print(final_)
output: 输出:
[{'inputData1': 'inputData1ValueArray'}, {'targetData1': 'targetData1ValueArray'}, {'inputData1': 'inputData1ValueArray'}, {'inputData1': 'inputData1ValueArray'}, {'targetData1': 'targetData1ValueArray'}, {'inputData1': 'inputData1ValueArray'}, {'inputData1': 'inputData1ValueArray'}, {'targetData2': 'targetData2ValueArray'}, {'inputData1': 'inputData1ValueArray'}, {'targetData2': 'targetData2ValueArray'}, {'inputData1': 'inputData1ValueArray'}, {'inputData1': 'inputData1ValueArray'}, {'inputData1': 'inputData1ValueArray'}, {'targetData3': 'targetData3ValueArray'}, {'targetData3': 'targetData3ValueArray'}, {'targetData1': 'targetData1ValueArray'}, {'inputData2': 'inputData2ValueArray'}, {'targetData1': 'targetData1ValueArray'}, {'inputData2': 'inputData2ValueArray'}, {'inputData2': 'inputData2ValueArray'}, {'targetData2': 'targetData2ValueArray'}, {'inputData2': 'inputData2ValueArray'}, {'inputData2': 'inputData2ValueArray'}, {'targetData2': 'targetData2ValueArray'}, {'inputData2': 'inputData2ValueArray'}, {'targetData3': 'targetData3ValueArray'}, {'inputData2': 'inputData2ValueArray'}, {'inputData2': 'inputData2ValueArray'}, {'inputData2': 'inputData2ValueArray'}, {'targetData3': 'targetData3ValueArray'}]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.