2010-12-10 20 views
1

un dictionnaire défini passe comme ceci:Tuple Comparaison

d = {"date": tuple(date),"open":tuple(open),"close":tuple(close),"min":tuple(min),"max":tuple(max),"MA":tuple(ma)} 

Chacun de ces tuples contient une liste de valeurs (même nombre de valeurs pour chaque tuple), comment puis-je itérer creux chaque valeur de paticular clés à comparer si "fermer" est supérieur à "MA"?

+0

suggestion suggérée: "même * nombre * de valeurs pour chaque tuple", au lieu de "même * quantité * de valeurs pour chaque tuple". – systemovich

+0

est logique, édité –

Répondre

1

Que manque-t-il? d['close'] > d['MA']?

Edit: Re, vos commentaires

[...] ce que je veux revenir est combien de fois un élément de "fermer" est> à l'élément correspondant de MA. (Même indice de tuple)

sum(pair[0] > pair[1] for pair in zip(d['close'], d['MA'])) 
+0

ouais, cela fonctionne (je veux dire, il renvoie True) mais ce que je veux retourner est de savoir combien de fois un élément de "fermer" est> à l'élément correspondant de MA. (même indice de tuple) –

+0

champion, ça marche :) –

1

De l'Python docs:

tuples et des listes sont comparées lexicographiquement en utilisant la comparaison des éléments correspondants. Cela signifie que pour comparer l'égalité, chaque élément doit être égal et les deux séquences doivent être du même type et avoir la même longueur.

Si elles ne sont pas égales, les séquences sont ordonnées de la même manière que leurs premiers éléments différents. Par exemple, cmp ([1,2, x], [1,2, y]) renvoie la même chose que cmp (x, y). Si l'élément correspondant n'existe pas, la séquence la plus courte est ordonnée en premier (par exemple, [1,2] < [1,2,3]).

Alors comme le dit @TokenMacGuy, vous pouvez simplement utiliser d['close'] > d['MA'] pour comparer les tuples respectifs.