Pour un tuple donné de tuples, je veux imprimer les éléments uniques qui se produisent dans la première position de chaque tuple, pour les rows suivants, ils seraient: python, PHP, html

Voici ce que j'ai essayé:

rows = (('python', 'kivy'), ('python', 'tkinter'),("python","wxpython"),
('PHP', 'bootstrap'),('html', 'ajax'),('html', 'css'))

for row in rows:
    if row[0] not in rows:
       print(row[0])
-2
AD WAN 12 avril 2018 à 15:15

3 réponses

Meilleure réponse

Si je vous ai bien compris, vous voulez simplement imprimer chaque occurrence du premier élément indépendamment des répétitions, et l'imprimer une seule fois? Pour ce faire, vous pouvez utiliser un set:

print(", ".join(set(e[0] for e in rows)))
# python, html, PHP

Si vous devez conserver la commande, c'est un peu plus difficile - vous devrez utiliser un ensemble temporaire pour éliminer les doublons:

seen = set()  # temp set
print(", ".join(l for l, p in rows if l not in seen and not seen.add(l)))
# python, PHP, html
2
zwer 12 avril 2018 à 12:24

Ne pouvez-vous pas simplement prendre tous les premiers objets et les mettre dans un ensemble? Et puis imprimer l'ensemble?

my_set = set(item[0] for item in rows)
print(my_set)  # {'python', 'html', 'PHP'}
2
Günther Eberl 12 avril 2018 à 12:22

Vous pouvez utiliser une liste (comme liste de contrôle)

rows = (('python', 'kivy'), ('python', 'tkinter'),("python","wxpython"),('PHP', 'bootstrap'),('html', 'ajax'),('html', 'css') )

lista=[]
for i in rows:
    if i[0] not in lista: 
        lista.append(i[0])
        print(i[0])

Ou

rows = (('python', 'kivy'), ('python', 'tkinter'),("python","wxpython"),('PHP', 'bootstrap'),('html', 'ajax'),('html', 'css') )

lista=[]    
[lista.append(i[0]) for i in rows if i[0] not in lista]
for i in lista: print(i)
-1
Luca Di Sabatino 12 avril 2018 à 12:38