Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

fab1904

[Resolvido] Contar número de participações

Mensagens Recomendadas

fab1904

Boa Tarde

Queria fazer uma função que contasse o numero de participações numa corrida de uma certa pessoa a função recebe uma lista de tuplos desta forma:

[('ana', 'outros_dados'),('ana', 'outros_dados'),('miguel','outros_dados')])

e a função tem de devolver [2,1] que é duas participações da ana e uma do miguel estou a ter alguma dificuldades tenho o seguinte código:

def part(dados):
   cont=0
   L=[]
   var=dados[0][0]
   for i in range(len(dados)):
       if dados[i][0]==var:
           cont=cont+1
   L.append(cont)
   print L

Isto funciona para o primeiro nome estou com alguma dificuldade em ver como é que posso fazer isto.

Desde já Obrigado

Editado por pwseo
syntax highlight.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

fab1904,

O ideal é armazenares as contagens num dicionário. Depois podes apresentar os resultados por ordem alfabética.

Sabes utilizar dicionários? Vai dizendo coisas

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
fab1904

Obrigado pela dica dos dicionário, bastante útil agora está a dar-me isto:

{'miguel': 1, 'ana': 2}

Como é que eu posso ordenar por ordem alfabética ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

Consegues isso através de uma combinação de items() e sorted():

>>> dic = { 'miguel': 1, 'ana': 2 }
>>> dic.items()
[('miguel', 1), ('ana', 2)]
>>> sorted(dic.items())
[('ana', 2), ('miguel', 1)]
>>>
>>> # Sabendo isto, então:
...
>>> [ v for _, v in sorted(dic.items()) ]
[2, 1]

Tenta compreender bem o que eu fiz. Se houver dúvidas avisa, eu explico. (outra nota: em Python 2, dic.iteritems() seria o mais indicado em vez de dic.items, mas para este exercício serve um qualquer).

Adenda: uma outra forma de fazer as coisas dispensa a utilização de items(), assim:

>>> sorted(dic)
['ana', 'miguel']
>>> [ dic[x] for x in sorted(dic) ]
[2, 1]

Editado por pwseo
Adicionado exemplo sem dict.items()

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.