Je suppose que vous êtes préoccupé par la vitesse d'itération. L'itération serait un temps d'ordre-n O(n).
En AppleScript, vous pouvez éventuellement utiliser un enregistrement d'enregistrements au lieu d'une liste d'enregistrements, mais je crois qu'alors la classe de la clé devrait être un identifiant - et non un nombre entier comme dans votre exemple.
Voici un lien vers une personne ayant une question similaire : Émulation de tableaux associatifs dans AppleScript
La réponse de Lauri Ranta consiste à utiliser l'outil de ligne de commande appelé "awk".
La solution que j'ai envisagée était de créer une application d'arrière-plan sans visage qui serait ce qu'on appelle un "agent" auquel les AppleScript pourraient faire appel pour utiliser leurs structures de données telles qu'un tableau associatif (également connu sous le nom de dictionnaire ou de mappage).
Je n'ai pas fait ma solution. C'est juste une idée, mais tu pourrais utiliser la réponse de Lauri, elle sait généralement de quoi elle parle.
Comme je connais un peu Pyton, et que Pyton est livré avec OS X, préinstallé dans le dossier système, j'envisagerais d'utiliser moi-même Python.
J'ai réessayé en "pur AppleScript" avec le code suivant dont je ne suis pas vraiment satisfait :
set theRecords to {fooKey:{key:"fooKey", value:"fooValue"}, barKey:{key:"barKey", value:"barValue"}}
try
set theRecord to get barKey of theRecords
display dialog (key of theRecord & ":" & value of theRecord)
on error errorMessage number errorNumber
if errorNumber is not equal to -128 then
display dialog "No match"
end if
end try
Vous pouvez mélanger les script du shell et les AppleScripts :
-- in AppleScript, you can call a shell script
do shell script "<enter your shell script here>"
Ou bien, vous pouvez appeler un AppleScript à partir d'un shell script avec l'outil de ligne de commande appelé "osascript".