gonca16 Posted December 1, 2015 at 11:34 PM Report Share #590289 Posted December 1, 2015 at 11:34 PM Boa Noite O meu problema assim muito simplificado é que eu tenho um dicionário de condutores está aqui um exemplo: {'Steven Neale': ['09:00', '02:10'], 'Ana Tavares': ['09:25', '04:45']} e depois tenho uma lista com reservas: [['Chris Cauly', '11:00', '11:30', 'baixa', '25'], ['Frank Gerry', '11:15', '11:45', 'belem', '40'] O que eu tenho de fazer é "casar" um condutor com uma reserva. Para uma reserva eu tenho de percorrer o dicionário para ver se algum condutor pode fazer aquela reserva perante uma condição os condutores nao podem ter mais de 5 horas no tempo acumulado que é o 2º elemento do valor ('Steven Neale': ['09:00','02:10']) Alguem consegue dar uma ajuda? Desde já Obrigado Link to comment Share on other sites More sharing options...
pwseo Posted December 30, 2015 at 04:21 PM Report Share #591142 Posted December 30, 2015 at 04:21 PM gonca16, Tens que explicar melhor o que são os valores que dás para cada reserva: [ 'Frank Guerry', # ok, é o nome '11:15', # ? '11:45', # ? 'belem', # zona? '40', # ? ] E no caso dos condutores, o 2º valor (ex.: 09:00) o que representa? Link to comment Share on other sites More sharing options...
jviana Posted December 31, 2015 at 04:39 PM Report Share #591163 Posted December 31, 2015 at 04:39 PM (edited) condu = {'Steven Neale': ['09:00', '02:10'], 'Ana Tavares': ['09:25', '06:45'], 'Bna Tavares': ['09:25', '04:59'], 'Bna rffTavares': ['09:25', '06:59']} for nome in condu.keys(): tempo = condu[nome][1] tempototal = float(tempo[:2]) + float(tempo[3:])/60 if tempototal <= 5: print nome + ' pode ser contratado' else: print nome + ' ultrapassa o limite' def horareal(tempo): return float(tempo[:2]) + float(tempo[3:])/60 condufil = {} for nome in condu.keys(): if float(horareal(condu[nome][1])) < 5: condufil[nome] = condu[nome] print condufil # condufil é uma lista com condutores viáveis Edited January 1, 2016 at 01:33 AM by jviana Learning VB.Net HTML C/C++ Link to comment Share on other sites More sharing options...
pwseo Posted December 31, 2015 at 09:38 PM Report Share #591167 Posted December 31, 2015 at 09:38 PM jviana, A ideia aqui era o gonca16 explicar-se melhor e não dar-lhe a solução (ou parte dela) de bandeja sem qualquer explicação. Relativamente ao teu código, está ali um erro de indentação (provavelmente ao copiar o código para o post), mas o que queria salientar é que há uma forma melhor de escrever aqueles loops: # em Python 2.x seria d.iteritems() for k, v in d.items(): # k é a chave # v é o valor # ... Desta forma o código fica mais limpo e também mais rápido, pois desaparecem aqueles acessos aos valores através da chave (ie. condu[nome] seria apenas v). Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now