/ / Como adiciono números diferentes em várias linhas em python? [fechado] - dicionário, python

Como faço para adicionar números diferentes em várias linhas em python? [fechado] - python, dicionário

Então, eu tenho um arquivo com 9 números de telefone diferentes. Há uma linha para cada chamada e a duração. Quero adicionar a duração das chamadas e combiná-las com o número de telefone deles.

Aqui está parte do arquivo:

    7803214567;94
7801234567;602
7801234567;910
7808765432;925
7801234567;631

O primeiro é o número de telefone e o segundo é a duração em segundos. Para ser mais claro, um exemplo: 7801234567, Eu quero adicionar 602, 910 e 631 e combine-o com seu próprio número de telefone 7801234567.

Respostas:

3 para resposta № 1

Parece que você deseja apenas contar o número total de minutos para cada número de telefone exclusivo.

Você poderia usar um contador:

from collections import Counter
c = Counter()

with open("path/to/file.txt", "r") as f:
for line in f:
k, v = line.split(";")
c += Counter({k: int(v)})

>>> print(c)
Counter({"7801234567": 2143, "7808765432": 925, "7803214567": 94})

5 para resposta № 2

Usar defaultdict:

from collections import defaultdict

call_times = defaultdict(int)

with open("phone.txt") as fobj:
for line in fobj:
number, call_time = line.split(";")
call_times[number.strip()] += int(call_time)

>>> call_times
defaultdict(int, {"7801234567": 2143, "7803214567": 94, "7808765432": 925})

defaultdict permite especificar uma chamada que cria um novo valor para uma chave ausente. Por exemplo, isso defaultdict:

>>> call_times = defaultdict(int)
>>> call_times
defaultdict(int, {})

retorna 0 para uma chave não possui:

>>> call_times["a"]
0

porque usa int() para essas chaves:

>>> int()
0

Portanto, você pode usar += para somar seus números:

>>> defaultdict(int, {"a": 0})
>>> call_times["b"] += 1
>>> call_times
defaultdict(int, {"a": 0, "b": 1})