J'ai une liste de tuples, où chaque tuple contient une représentation sous forme de chaîne de coordonnées xyz. Je dois comparer les première et seconde valeurs des tuples à un autre ensemble de valeurs dans un dictionnaire (pour déterminer si le premier élément du tuple est le point de départ ou point final)Comparaison efficace du tuple avec la liste
-à-dire
tuple_list = [('0.1, 0.5, 2.0', '3.0, 5.0, 6.0'), ('0.0, 0.6, 2.0', '4.0, 5.0, 6.0')]
vertex_dict = {'0': '3.0, 5.0, 6.0', '1': '0.0, 0.6, 2.0'}
Si le premier item du tuple correspond à la liste des vertex, je veux indiquer qu'il s'agit du point "start", tandis que le second élément du tuple est le point "end".
Actuellement, je suis en train d'accomplir cela avec le code suivant:
pt_line_dict = {}
for key, value in vertex_dict:
for i, j in tuple_list:
if i == value:
pt_line_dict[key] = (i, j)
elif j == value:
pt_line_dict[key] = (j, i)
else:
pass
Output:
pt_line_dict = {'0': ('3.0, 5.0, 6.0', '0.1, 0.5, 2.0'), '1': ('0.0, 0.6, 2.0', '4.0, 5.0, 6.0')}
Il n'y a aucune chance d'avoir des doublons entre tuples, et le dictionnaire de sommet est également unique (pas de répétitions de valeurs clés).
Y a-t-il une manière plus efficace de faire ceci qui évite de boucler toutes les valeurs dans la liste de tuple? Je pense qu'un générateur pourrait être une façon de le faire ...
quelle serait la sortie désirée pour l'exemple que vous avez posté? –
Je ne peux pas comprendre ce que vous voulez faire. – stamaimer
votre approche initiale n'est pas si mauvaise – RomanPerekhrest