在python中如何在多行中添加不同的数字?

2024-05-15 10:46:17 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有9个不同电话号码的档案。每一个电话都有一条电话线,还有通话时间。我想把通话的持续时间加起来,把它们和他们自己的电话号码匹配起来。你知道吗

以下是文件的一部分:

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

第一个是电话号码,第二个是以秒为单位的持续时间。更清楚地说,例如:7801234567,我想添加602910631,并将其与自己的电话号码7801234567匹配。你知道吗


Tags: 文件电话号码单位档案持续时间电话通话电话线
2条回答

似乎您只想计算每个唯一电话号码的总分钟数。你知道吗

您可以使用counter

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})

使用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允许指定一个可调用项,为丢失的键创建一个新值。例如,这个defaultdict

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

为它没有的键返回0

>>> call_times['a']
0

因为它使用int()作为这样的键:

>>> int()
0

因此,您可以使用+=将数字相加:

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

相关问题 更多 >