用python下面所示为一套由公司职员随身佩戴的位置传感器采集的数据,并已经提取出传感器编号为 "earpa001" 的所有数据,保存到" earpa001.txt "文件。 第一列是传感器获取数据的时间,第二列是传感器的编号,第三列是传感器所在的楼层.第四列是传感器所在的位置区域编号。 假设数据如下: 2016/5/31 7:11,earpa001,2,4 2016/5/31 8:02,earpa001,3,4 2016/5/31 9:22,earpa001,3,4 … (略) 问题:在点击答题后打开的文件中编写代码,读入" earpaO01.txt "文件中的数据,统计earpaOO1对应的职员在各楼层和区域出现的次数. 注意,按照出现次数从低到高排序。 保存到" earpa001_count.txt "文件,每条记录一行.位置信息和出现的次数之间用英文半角逗号隔开,行尾无空格,无空行。 参考格式如下。 1-1,5 1-4,3 … (略) 含义如下: 第 1 行"1-1,5"中1-1表示 1 楼 1 号区域, 5 表示出现 5 次; 第 2 行"1-4,3"中1-4表示 1 楼 4 号区域, 3 表示出现 3 次; '''
时间: 2024-03-24 13:41:57 浏览: 39
以下是代码实现:
```python
import collections
with open('earpa001.txt', 'r') as f:
data = [line.strip().split(',') for line in f.readlines()]
earpa001_data = [d for d in data if d[1] == 'earpa001']
count_dict = collections.defaultdict(int)
for d in earpa001_data:
count_dict[(d[2], d[3])] += 1
sorted_count = sorted(count_dict.items(), key=lambda x: x[1])
with open('earpa001_count.txt', 'w') as f:
for k, v in sorted_count:
f.write(f"{k[0]}-{k[1]},{v}\n")
```
首先读取文件并将数据存储在一个列表中,然后筛选出传感器编号为 "earpa001" 的数据。接着使用 `collections.defaultdict` 构建一个字典,用于统计不同位置的出现次数。最后按照出现次数从低到高排序,并将结果写入到指定文件中。
阅读全文