• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

fastio

Como armazenar estes dados num dicionario??

4 mensagens neste tópico

Boas :)

Ando aqui às voltas para descobrir uma maneira de guardar uns dados num dicionário, mas estou um bocado com dificuldade para o fazer, vcs já vão perceber o porquê...

Ora bem, os dados de input são estes:

San Luis Obispo,Bakersfield,CA-58,117

Bakersfield,Mojave,CA-58,65

Mojave,Barstow,CA-58,70

Barstow,Baker,I-15,62

Baker,Las Vegas,I-15,92

San Luis Obispo,Santa Barbara,US-101,106

San Luis Obispo,Santa Barbara,CA-1,113

Santa Barbara,Los Angeles,US-101,95

Bakersfield,Wheeler Ridge,CA-99,24

Wheeler Ridge,Los Angeles,I-5,88

Mojave,Los Angeles,CA-14,94

Los Angeles,San Bernardino,I-10,65

San Bernardino,Barstow,I-15,73

Los Angeles,San Diego,I-5,121

San Bernardino,San Diego,I-15,103

A ideia do programa é dar o caminho mais curto de um ponto a outro, por exemplo, entre Santa Barbara e Las Vegas. Para isso, posso utilizar o algoritmo de Dijkstra, para obter o caminho com menor custo.

Inicialmente pensei em guardar os dados num dicionário, desta forma:

{'Bakersfield': {'Mojave': 65}, 'San Luis Obispo': {'Bakersfield': 117}, 'Mojave': {'Barstow': 70}}  etc etc etc

A minha dificuldade, neste exemplo, prende-se com o ponto 'San Luis Obispo' -> 'Santa Barbara'. Se eu continuar a usar o mesmo modo, qnd inserir o segundo caminho 'San Luis Obispo' -> 'Santa Barbara', os dados anteriores vão ser substituidos pelo novo, visto a chave ser a mesma. O que para o caso é uma grande chatice!!

Alguma sugestão para resolver esta situação de armazenamento de dados??

Nesta altura não estou propriamente interessado em guardar o nome das estradas, embora mais tarde vou precisar para mostrar o melhor caminho..

Obg desde ja :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes usar dicionários, tens é de ter uma estrutura que tenha todas as ligações:

{'Bakersfield': {'Mojave': 65, 'San Luis Obispo': 117}, 'Mojave': {'Bakersfield': 65, 'Barstow': 70} ... }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes usar dicionários, tens é de ter uma estrutura que tenha todas as ligações:

{'Bakersfield': {'Mojave': 65, 'San Luis Obispo': 117}, 'Mojave': {'Bakersfield': 65, 'Barstow': 70} ... }

Obg pela resposta.

Até aí,tudo bem, já tinha chegado e determinado que assim é a melhor maneira. Mas não se é como fazer para para a ligação 'San Luis Obispo' -> 'Santa Barbara', que tem 2 caminhos diferentes, com pesos diferentes. Não dá para pôr os 2 nesta estrutura porque como a chave é a mesma (Santa Barbara), só consigo guardar a ultima ligação inserida. Não dá para fazer uma coisa do género:

{'San Luis Obispo':{'Santa Barbara':106,'Santa Barbara':113, ...},...}    o python guarda o ultimo valor inserido, pois têm chaves iguais.

Anyone? tnks

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usas uma lista de caminhos

{'San Luis Obispo':{'Santa Barbara': [106,113] , ...},...}

A lista até pode ser ordenada de forma a encontrares a coisa mais depressa.

0

Partilhar esta mensagem


Link 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