J'ai cette exigence unique qui peut être expliquée par ce code. C'est du code fonctionnel mais pas efficace en mémoire.
data = [[
"A 5408599",
"B 8126880",
"A 2003529",
],
[
"C 9925336",
"C 3705674",
"A 823678571",
"C 3205170186",
],
[
"C 9772980",
"B 8960327",
"C 4185139021",
"D 1226285245",
"C 2523866271",
"D 2940954504",
"D 5083193",
]]
temp_dict = {
item: index for index, sublist in enumerate(data)
for item in sublist
}
print(data[temp_dict["A 2003529"]])
out: ['A 5408599', 'B 8126880', 'A 2003529']
En bref, je veux que chaque élément de la sous-liste soit indexable et devrait renvoyer la sous-liste.
La méthode ci-dessus fonctionne, mais elle prend beaucoup de mémoire lorsque les données sont volumineuses. Existe-t-il un meilleur moyen, compatible avec la mémoire et le processeur? Les données sont stockées sous forme de fichier JSON.
Modifier J'ai essayé les réponses pour le plus grand scénario de cas d'utilisation possible (1000 sous-listes, 100 éléments dans chaque sous-liste, 1 million de requêtes) et voici les résultats (moyenne de 10 exécutions):
Method, Time (seconds), Extra Memory used
my, 0.637 40 Mb
deceze, 0.63 40 Mb
James, 0.78 200 kb
Pant, > 300 0 kb
mcsoini, forever 0 kb
{item: sublist for sublist in data for item in sublist}pourrait être un peu plus efficace et direct…?!