在内置计数器函数创建的字典中访问 key/value 对 (python 3.4)

Accessing key/value pairs in a dictionary created by the built-in counter function (python 3.4)

所以我在这里找到了我的答案Python: count repeated elements in the list

但我找不到问题的第二部分。也就是说,我如何访问由函数 Counter 创建的字典中的值?这是我目前的代码:

import collections
from collections import Counter
only_callers=[]
for line in infile:
    calls=line.split(';')
    index=calls[1]
    only_callers.append(index)
    count=Counter(only_callers)
for value in count:
    print(count.get[only_callers])

这个问题的背景是,我需要计算每个号码的呼叫次数,然后将该号码放入 table。我从名为 calls.txt 的文件中获取呼叫次数。

所以这是我打印调用时的输出: Counter({'7804922860': 502, '7801234567': 384, '7809876543': 374....})

现在,当我尝试访问第二个 for 循环中的值时,我得到了: 类型错误:'builtin_function_or_method' 对象不是下标table

那么我如何访问(和提取)我的值(每个值)以便我可以手动将它们放在 table 上?

注意:我打印 count 字典的第二个 for 循环只是为了检查它是否有效,显然不是来自 TypeError 消息

有更好的方法来解决这个问题,您可以像使用字典一样使用 Counter

only_callers=[]
full_count = Counter()
for line in infile:
    calls=line.split(';')
    index=calls[1]
    only_callers.append(index)
    full_count.update(only_callers)

print full_count[<something>]

第一个示例的问题是您在每个循环中创建了一个新计数器:

for line in infile:
    # make only_callers
    count=Counter(only_callers)

count 没有在循环外引用,所以它被创建,然后每个循环立即覆盖计数。每个循环都覆盖了 count

现在,我假设您实际上想要保持计数并累加它们。这样做的方法是在进入循环之前实例化一个计数器并在每个点更新它而不是创建一个新对象因此:

total_count = Counter()
for line in infile:
    total_count.update(<new_entries>)

完成后,您就拥有了 full_count 对象,您可以像访问标准字典一样访问它(上面的语法不起作用),如下所示:

total_count[<key>]

total_count.get(<key>, <default>)

您得到的 TypeError 是因为 .get[] 语法不存在。这就像你试图抓住一个函数的特定元素。