python collections.defaultdict变量如何访问里面的值
时间: 2023-12-30 21:20:07 浏览: 122
`defaultdict`是一个类似字典的数据类型,它的一个特点是在访问不存在的键时,会自动创建一个默认值。访问`defaultdict`中的值可以使用索引操作符`[]`。如果键存在,则返回对应的值;如果键不存在,则返回默认值。例如:
```python
from collections import defaultdict
# 创建一个默认值为0的defaultdict对象
d = defaultdict(int)
# 访问键'foo'的值,由于键不存在,会返回默认值0
print(d['foo']) # 输出: 0
# 设置键'bar'的值为1
d['bar'] = 1
# 访问键'bar'的值,由于键存在,会返回对应的值1
print(d['bar']) # 输出: 1
```
注意,访问`defaultdict`中不存在的键时,会自动创建一个默认值。例如:
```python
# 访问键'baz'的值,由于键不存在,会自动创建一个默认值0,并返回该值
print(d['baz']) # 输出: 0
# 现在键'baz'存在了,并且值为默认值0
print(d) # 输出: defaultdict(<class 'int'>, {'bar': 1, 'foo': 0, 'baz': 0})
```
相关问题
num_matches, label_subs = 0, collections.defaultdict(int)
这是一行 Python 代码,其中包含两个变量的初始化操作。
`num_matches` 被初始化为 0,这是一个整数类型的变量。它通常用于计数器,记录某个事件发生的次数。
`label_subs` 被初始化为一个默认值为 0 的字典。这个字典保存了一个标签(label)和对应的出现次数(substitutions)。在这个字典中,如果一个标签没有被显式地添加到字典中,它的值会默认为 0。这个字典通常用于统计分类问题中每个类别的样本数。
import sys import re import collections WORD_RE = re.compile(r'\w+') index = collections.defaultdict(list) with open(sys.argv[1], encoding='utf-8') as fp: for line_no, line in enumerate(fp, 1): for match in WORD_RE.finditer(line): word = match.group() column_no = match.start()+1 location = (line_no, column_no) index[word].append(location) for word in sorted(index, key=str.upper): print(word, index[word]) Traceback (most recent call last): File "C:\Users\YJanu\yuanzu.py", line 5, in <module> for line_no, line in enumerate(fp, 1): NameError: name 'fp' is not defined 报错,修改代码可以正确执行
这个错误是因为 `fp` 变量没有被正确定义,可能是因为文件名参数没有传递给脚本。你可以尝试修改代码,在脚本执行时传递文件名参数,例如:
```python
import sys
import re
import collections
WORD_RE = re.compile(r'\w+')
index = collections.defaultdict(list)
with open(sys.argv[1], encoding='utf-8') as fp:
for line_no, line in enumerate(fp, 1):
for match in WORD_RE.finditer(line):
word = match.group()
column_no = match.start()+1
location = (line_no, column_no)
index[word].append(location)
for word in sorted(index, key=str.upper):
print(word, index[word])
```
在命令行中执行该脚本时,需要传递一个文件名参数,例如:
```
python script.py mytextfile.txt
```
其中 `script.py` 是你的脚本文件名,`mytextfile.txt` 是你要处理的文本文件名。
阅读全文