J'ai trois listes:
dict = {(gene_1, 1):'atcatcg', (gene_2, 2):'atcatcg'}
3 Réponses :
Utilisez Zip :
result = {(gene, number) : value for gene, number, value in zip(gene, number, list_third)}
L'amélioration mineure consiste à laisser une autre couche de zip code> créer directement le tuple code> s directement: {clé: valeur pour la clé, valeur dans zip (zip (gène, numéro), list_third)} code>. Et bien sûr, cela quitte la compréhension code> dict code> ne faisant rien de spécial, vous pouvez donc simplement le faire dict (zip (gène, numéro), list_third)) code>.
@Shadowranger qui est une solution alternative, mais je pensais que Flat était mieux qui imbriquait. Quoi qu'il en soit, si le constructeur de dict est plus rapide, votre solution est la voie à suivre.
@Raysteam: C'est définitivement plus rapide, mais ce n'est pas le tout, mettre fin à tous les critères. Personnellement, j'aime votre deuxième code> compréhension dict code> pour résister à l'envie d'utiliser des noms sans courrier indésirables, à l'aide de noms significatifs et de préciser comment ils reconquent (il est probablement plus rapide que votre première solution à démarrer, bien que légèrement plus lente que < Code> dict code> d'imbriquée zip code>).
ZIP code> à itérer sur les trois listes
gène code> et numéro code> pour la clé et utilisez la séquence pour la valeur. LI>
ul> Utilisez le constructeur dict code> constructeur et zip code> ... deux fois:
Dupliquer: Сreate Un dictionnaire d'un zip de 3 listes (pour adopter la solution donnée aux touches au lieu de valeurs est triviale)