IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Tri d'un dictionnaire


Sujet :

Python

  1. #21
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 42
    Points : 13
    Points
    13
    Par défaut
    Si si regarde ta réponse du 15/11 à 8h56

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Relique=(
    	cRelique("Relique1", 5, 6, 2, 7, 2),
    	cRelique("Relique2", 10, 9, 3, 1, 4),
    	cRelique("Relique3", 7, 17, 4, 6, 6),
    	cRelique("Relique4", 2, 12, 5, 8, 1),
    )
    Le premier paramètre entre guillemet est le nom de la relique. Par exemple:
    Ceinture Omega
    Œil de terre
    Emprise élementaire - Vide
    Emprise élementaire - Feu
    Emprise élementaire - Glace

    Voici le code que j'utilise actuellement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    #!/usr/bin/env python3
    # coding: utf-8
    raw_input = input
    from functools import cmp_to_key
     
    class cRelique:
    	carac=("Titan Sante","Titan Degats","Titan Armure","Titan Perforation","Titan Critique","Troupes Degats","Resistance Distance","Resistance Melee","Horde Sante","Horde Degats","Horde Armure","Horde Perforation","Horde Critique","Omega Sante","Omega Degats","Omega Armure","Omega Perforation","Omega Critique","Titan Resistance Feu","Titan Resistance Glace","Titan Resistance Physique","Titan Resistance Vide","Titan Resistance Terre","Titan Resistance Poison","Titan Resistance Eclair","Horde Resistance Feu","Horde Resistance Glace","Horde Resistance Physique","Horde Resistance Vide","Horde Resistance Terre","Horde Resistance Poison","Horde Resistance Eclair","Omega Resistance Feu","Omega Resistance Glace","Omega Resistance Physique","Omega Resistance Vide","Omega Resistance Terre","Omega Resistance Poison","Omega Resistance Eclair")
    	def __init__(self, name="", TitanSante=0, TitanDegats=0, TitanArmure=0, TitanPerforation=0, TitanCritique=0, TroupesDegats=0, ResistanceDistance=0, ResistanceMelee=0, HordeSante=0, HordeDegats=0, HordeArmure=0, HordePerforation=0, HordeCritique=0, OmegaSante=0, OmegaDegats=0, OmegaArmure=0, OmegaPerforation=0, OmegaCritique=0, TitanResistanceFeu=0, TitanResistanceGlace=0, TitanResistancePhysique=0, TitanResistanceVide=0, TitanResistanceTerre=0, TitanResistancePoison=0, TitanResistanceEclair=0, HordeResistanceFeu=0, HordeResistanceGlace=0, HordeResistancePhysique=0, HordeResistanceVide=0, HordeResistanceTerre=0, HordeResistancePoison=0, HordeResistanceEclair=0, OmegaResistanceFeu=0, OmegaResistanceGlace=0, OmegaResistancePhysique=0, OmegaResistanceVide=0, OmegaResistanceTerre=0, OmegaResistancePoison=0, OmegaResistanceEclair=0):
    		self.__values={
    			"name" : name,
    		}
    		self.__values.update(
    			zip(
    				cRelique.carac,
    				(TitanSante, TitanDegats, TitanArmure, TitanPerforation, TitanCritique, TroupesDegats, ResistanceDistance, ResistanceMelee, HordeSante, HordeDegats, HordeArmure, HordePerforation, HordeCritique, OmegaSante, OmegaDegats, OmegaArmure, OmegaPerforation, OmegaCritique, TitanResistanceFeu, TitanResistanceGlace, TitanResistancePhysique, TitanResistanceVide, TitanResistanceTerre, TitanResistancePoison, TitanResistanceEclair, HordeResistanceFeu, HordeResistanceGlace, HordeResistancePhysique, HordeResistanceVide, HordeResistanceTerre, HordeResistancePoison, HordeResistanceEclair, OmegaResistanceFeu, OmegaResistanceGlace, OmegaResistancePhysique, OmegaResistanceVide, OmegaResistanceTerre, OmegaResistancePoison, OmegaResistanceEclair),
                                     )
    		)
    	# __init__()
     
    	# Pour pouvoir utiliser l'objet comme un dictionnaire
    	__getitem__=lambda self, k: self.__values[k]
     
    	# La liste des combinaisons d'objets
            #@staticmethod
    	def comb(n, reliques):
    		# Fonction récursive de génération
    		def generate_r(n, lst):
    			if n == 0: return ((),)
    			return tuple(
    				(x,) + tuple(suffix,)
    				for (i, x) in enumerate(lst)
    				for suffix in generate_r(n-1, lst[i+1:])
    			)
    		# generate_r()
     
    		# Génération des reliques
    		return generate_r(n, reliques)
    	# comb()
     
    	# Les totaux des valeurs des combinaisons
            #@staticmethod
    	def totaux(reliques, comb, base=None):
    		tot={}
    		for c in comb:
    			tot[c]={}
    			for k in cRelique.carac:
    				tot[c][k]=sum(x[k] for x in reliques if x in c)
    				if base: tot[c][k]+=base[k]
    		# for
    		return tot
    	# totaux()
     
     
    	# Le tri des totaux
            #@staticmethod
    	def sort(tableau, liste_keys, reverse=False):
    		# La fonction qui compare deux items du tableau
    		def comp(x, y):
    			# On va faire une comparaison des items sur chaque critère
    			for (k, v) in liste_keys:
    				ret={
    					"<" : (-1, 1),
    					">" : (1, -1),
    				}[v]
    				if x[1][k] < y[1][k]: return ret[0]
    				if x[1][k] > y[1][k]: return ret[1]
    			# for
     
    			# Les deux items sont définitivement identiques
    			return 0
    		# comp()
     
    		# On trie le tableau selon ce que renvoie la fonction (là Python se démerde pour appeler la fonction sur chaque élément du tableau autant de fois qu'il le faut)
    		return sorted(tableau, key=cmp_to_key(comp), reverse=reverse)
    	# sort()
     
     
    # class cRelique
    Relique=(
    cRelique("	FioleMaudite	",	0	,	60	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	50	,	0	,	0	,	0	,	0	,	50	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	16	,	16	,	16	,	16	,	16	,	16	,	16	,	16	,	16	,	16	,	16	,	16	,	16	,	16	,),
    cRelique("	CouronneD'Osiris	",	0	,	30	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	30	,	0	,	36	,	0	,	0	,	30	,	0	,	36	,	36	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,),
    cRelique("	EpéeEnOs	",	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	50	,	0	,	30	,	20	,	0	,	50	,	0	,	30	,	20	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,),
    cRelique("	DagueDeSacrifice	",	0	,	50	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	50	,	0	,	30	,	0	,	0	,	50	,	0	,	30	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,),
    cRelique("	OrbeDeRancoeur	",	0	,	30	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	30	,	0	,	0	,	0	,	0	,	30	,	0	,	0	,	0	,	0	,	0	,	0	,	0	,	24	,	24	,	0	,	0	,	0	,	0	,	0	,	24	,	24	,	0	,	0	,	0	,	0	,	0	,	24	,	24	,	0	,)
     
    )
     
    Base=cRelique(0, 0, 0, 0, 0)
     
    # Calcul des combinaisons possibes
    combinaisons=cRelique.comb(3, Relique)
    #print("comb: ", tuple(tuple(r["name"] for r in c) for c in combinaisons))
     
    # Les totaux des valeurs des combinaisons
    totaux=cRelique.totaux(Relique, combinaisons, Base)
    #print("totaux")
    #for (k, v) in totaux.items():
    #	print(tuple(x["name"] for x in k), v)
     
     
    #Choix des paramètres
    print(" ".join("%d.%s" % (i, c) for (i, c) in enumerate(cRelique.carac, 1)))
     
    while True:
    	reponse = raw_input("Choisissez un 1er paramètre de tri: ")
    	choix1=dict((i, c) for (i, c) in enumerate(cRelique.carac, 1)).get(int(reponse))
    	if choix1 is not None: break
    	print ("Choix incorrect !")
    while True:
    	reponse = raw_input("Choisissez un 2ème paramètre de tri: ")
    	choix2=dict((i, c) for (i, c) in enumerate(cRelique.carac, 1)).get(int(reponse))
    	if choix2 is not None: break
    	print ("Choix incorrect !")
     
    # while
    #print(choix1)
    #print(choix2)
    # Le tri des totaux
    tri=cRelique.sort(totaux.items(), ((choix1, ">"), (choix2, ">")), reverse=False)
     
    #print("tri")
    for t in tri:
    	obFichier = open('Monfichier.txt','a')
    	obFichier.write("*"*50 + "\n")
    	obFichier.write(str(tuple(x["name"] for x in t[0])) + "\n")
    	for k in cRelique.carac:
    		obFichier.write(str("%s: %d\n" % (k, t[1][k])))

  2. #22
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Il faut noter une solution qui n'a pas été abordée ici mais qui serait plus performante pour obtenir un dictionnaire trié, c'est de modifier la classe dictionnaire...

    Bien qu'on dispose de nos jours d'algorithmes de tri très performants, y compris chez Python ("Timsort"), on sait depuis longtemps qu'il y a une solution encore meilleure pour obtenir une liste triée: c'est qu'on n'ait pas besoin de la trier! C'est à dire placer la nouvelle valeur au "bon endroit" à chaque ajout.

    En utilisant la POO, on sous-classe "dict" ou on utilise "UserDict" du module collections, et on surcharge les méthodes qu'il faut pour obtenir à chaque nouvel élément la liste triée dans l'ordre qu'on veut. Pour éviter de trop modifier, on peut se contenter d'ajouter une liste d'index permettant de retrouver les éléments dans l'ordre voulu (des clés ou des valeurs), et d'insérer chaque nouvel élément en mettant cette liste d'index à jour avec, par exemple, une recherche dichotomique.

    J'avais fait quelque chose d'approchant pour conserver l'ordre d'insertion avant que n'existe "OrderedDict" du module collections (donc avant la version 2.7): http://python.jpvweb.com/python/mesr...tionnaire_ordo.

    Mais il est vrai que ça nécessite un investissement en développement qui ne justifie peut-être pas ici.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #23
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par tyrtamos Voir le message
    Mais il est vrai que ça nécessite un investissement en développement qui ne justifie peut-être pas ici.
    Le vrai soucis est que le PO ajoute des fonctionnalités au fur et à mesure que son code lui permet d'obtenir des premiers résultats.
    Et quand on ne sait pas trop où on va, il faut éviter de coder: çà prend du temps, çà oblige à structurer ses données d'une façon qu'on risque de regretter plus tard,...
    Et pour éviter de coder, une base de données ou une bibliothèque comme pandas sont quand même intéressants.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #24
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par wiztricks Voir le message
    Le vrai soucis est que le PO ajoute des fonctionnalités au fur et à mesure que son code lui permet d'obtenir des premiers résultats.
    Et quand on ne sait pas trop où on va, il faut éviter de coder: çà prend du temps, çà oblige à structurer ses données d'une façon qu'on risque de regretter plus tard,...
    Et pour éviter de coder, une base de données ou une bibliothèque comme pandas sont quand même intéressants.
    Entièrement d'accord! Je voulais juste qu'on n'oublie pas cette solution dans les cas où elle serait adaptée.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #25
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par DantonLuc Voir le message
    Si si regarde ta réponse du 15/11 à 8h56

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Relique=(
    	cRelique("Relique1", 5, 6, 2, 7, 2),
    	cRelique("Relique2", 10, 9, 3, 1, 4),
    	cRelique("Relique3", 7, 17, 4, 6, 6),
    	cRelique("Relique4", 2, 12, 5, 8, 1),
    )
    Le premier paramètre entre guillemet est le nom de la relique. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Ceinture Omega
    Œil de terre
    Emprise élementaire - Vide
    Emprise élementaire - Feu
    Emprise élementaire - Glace
    Ok, je comprends.

    Mais là ta principale erreur est que tu essayes de "magouiller" en introduisant ta notion de "similarité". C'est à dire (comme le dit wiztricks), que tu rajoutes des contraintes nouvelles au fur et à mesure de ton inspiration tout en essayant de les faire entrer dans un code qui gère des contraintes d'origines mais qui n'a pas été pensé pour gérer un nom à 2 niveaux. Parce que c'est ça en réalité que tu veux faire. Tu veux introduire une notion de "famille" ou de "groupe" de reliques et ensuite les composer ensembles.
    Donc si vraiment tu veux faire ça, fais-le propre. Fais tes fondations. Prépare tes objets. Par exemple rajoute un attribut groupe (str) à l'objet qui gère une relique, groupe que tu pourras alors utiliser pour ensuite trouver (ou filtrer) les autres reliques qui ont le même.
    Ou alors (comme l'a cette fois dit Tyrtamos), commence à te pencher vers des librairies dédiées aux structures de données et aux traitements...

    Tu as le droit de faire évoluer ton truc, mais il faut aussi alors assumer. En gros, "paye ton évol".
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #26
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 42
    Points : 13
    Points
    13
    Par défaut
    Merci a vous pour les réponses et suggestions.

    @Sve@r je ne pensais pas magouiller pour que cela rentre dans mon code. Juste que Python pouvait lire les combinaisons des noms de reliques du fichier résultat et supprimer les combinaisons ayant un nom identique.
    S'il faut tout recoder...

    Je vais regarder les autres solutions proposées.

    Merci encore

  7. #27
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par DantonLuc Voir le message
    je ne pensais pas magouiller pour que cela rentre dans mon code. Juste que Python pouvait lire les combinaisons des noms de reliques du fichier résultat et supprimer les combinaisons ayant un nom identique.
    Bien sûr qu'il peut. Mais comment considérer un nom identique ? "Titan Sante" est il identique (enfin au sens où tu l'entends) avec "Titan Saga" ? Admettons. Mais ne sera-t-il pas aussi identique à "Titanus Waterworld" ?
    C'est là que rentre le terme "magouille" (c'est pas péjoratif, c'est que c'est exactement le terme ; ou alors on parle parfois de "verrues" et là c'est péjoratif). Parce que tu vas dire "ok je me cale sur l'espace qui sépare les mots". Et puis (manque de bol) tu as demain "Titans Raté" (avec un "s") ou "Titan le raté" et "Titan la sauvage" (quel espace utiliser pour séparer "groupe" et "nom") ou toute autre couille qui fait que ton algo ne reconnait pas la similarité.

    Citation Envoyé par DantonLuc Voir le message
    S'il faut tout recoder...
    Hé oui. Enfin pas tout mais pas loin. Tu as changé les les bases, ça tu dois l'admettre. Donc il faut recoder ces bases. Et c'est pareil pour tout le monde, te fait pas d'illusion. Quand Unix a été créé, les concepteurs ont bossé dessus pendant 5 ans. parce qu'ils n'avaient pas pensé certains détails qui arrivaient après et qui obligeaient à revoir certaines bases (ben oui, les bases c'est un peu dans tout projet qu'il y en a) et qui descendaient ensuite en cascade.
    Au bout du compte ils en ont eu marre. Au bout de 5 ans de travail ils ont tout benné. Ils sont repartis de 0 (mais avec leur expérience) et Unix est sorti 2 ans après.

    Toi c'est pareil. Maintenant tu as l'expérience. Si tu fais de bonnes bases bien solides, le reste ce sera peanut. Ou bien tu t'enferres à gérer les cas au cas par cas et ton programme sera ensuite un truc illisible et surtout inmaintenable. Et "tout recoder" ne veut aps dire "tout retaper". Tu as des portiions de codes que tu peux réutiliser.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #28
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 42
    Points : 13
    Points
    13
    Par défaut
    Je vois ce que tu veux dire mais dans mon cas, je ne souhaite pas le commercialiser, c'est juste pour mon usage perso. Je suis donc maitre pour choisir un nom de reliques qui satisfasse la similarité.
    Je pensais prendre les 5 premières lettres du nom pour savoir si cela est identique. Et si un jour j'ai besoin de plus de lettres pour les différencier, c'est facile à faire évoluer.

    Dans ton message précédent tu dis
    Par exemple rajoute un attribut groupe (str) à l'objet qui gère une relique, groupe que tu pourras alors utiliser pour ensuite trouver (ou filtrer) les autres reliques qui ont le même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class cRelique:
    	carac=("Titan Sante","Titan Degats","Titan Armure","Titan Perforation")
    	def __init__(self, name="", TitanSante=0, TitanDegats=0, TitanArmure=0, TitanPerforation=0):
    		self.__values={
    			"name" : name,
    		}
    		self.__values.update(
    			zip(
    				cRelique.carac,
    				(TitanSante, TitanDegats, TitanArmure, TitanPerforation),
                                     )
    Quel est la différence avec le précédent code? name est bien défini dans l'objet comme "str" déja

  9. #29
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par DantonLuc Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class cRelique:
    	carac=("Titan Sante","Titan Degats","Titan Armure","Titan Perforation")
    	def __init__(self, name="", TitanSante=0, TitanDegats=0, TitanArmure=0, TitanPerforation=0):
    		self.__values={
    			"name" : name,
    		}
    		self.__values.update(
    			zip(
    				cRelique.carac,
    				(TitanSante, TitanDegats, TitanArmure, TitanPerforation),
                                     )
    Quel est la différence avec le précédent code? name est bien défini dans l'objet comme "str" déja
    Ok. alors j'ai pas bien compris ce que tu veux faire.
    Ok, part de cet objet tel que tu le définis et montre-moi 2/3 instances d'exemple et comment tu veux les organiser au final...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [Python 2.X] tri d'un dictionnaire de dictionnaire
    Par DonKnacki dans le forum Général Python
    Réponses: 4
    Dernier message: 04/09/2018, 13h58
  2. [XL-2003] Tri - double d'un dictionnaire
    Par MarcelG dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/08/2012, 10h17
  3. [Débutant] C# tri d'un dictionnaire
    Par JonathanMQ dans le forum C#
    Réponses: 7
    Dernier message: 14/07/2012, 02h49
  4. Tri dictionnaire par clés
    Par mister2502 dans le forum Général Python
    Réponses: 7
    Dernier message: 07/04/2009, 21h37
  5. Tri liste dans un dictionnaire
    Par MC wacko dans le forum Général Python
    Réponses: 5
    Dernier message: 21/01/2008, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo