如何将文件中种类相同的数量进行相加,在输出成列表
时间: 2024-03-25 13:41:02 浏览: 89
将文件夹内的文件合并输出
假设您有一个文件 `data.txt`,其中包含了多行数据,每行数据包含了一个种类和一个数量,格式类似于:
```
苹果,10
香蕉,20
橘子,15
苹果,5
橘子,8
```
您想要将文件中同种类的数量相加,并输出成一个列表,格式类似于:
```python
[('苹果', 15), ('香蕉', 20), ('橘子', 23)]
```
可以使用 Python 的字典来实现这个功能。具体步骤如下:
1. 打开文件,逐行读取数据,并将数据存储到字典中。使用字典的键表示种类,值表示数量,例如:
```python
data = {}
with open("data.txt", "r") as f:
for line in f:
items = line.strip().split(",")
category = items[0]
count = int(items[1])
data[category] = data.get(category, 0) + count
```
在上面的代码中,我们使用了文件操作函数 open() 打开文件,并使用 for 循环逐行读取数据。在每行数据中,我们使用 split() 方法将种类和数量拆分成两个字符串,并使用 int() 函数将数量转换为整数。然后,使用字典的 get() 方法获取该种类已有的数量(如果没有则默认为 0),并将读取到的数量加上去。
2. 将字典转换为列表,并按数量从大到小排序。可以使用 items() 方法将字典转换为元组列表,然后使用 sorted() 函数按元组的第二个元素从大到小排序,例如:
```python
result = sorted(data.items(), key=lambda x: x[1], reverse=True)
```
在上面的代码中,使用了 sorted() 函数和 lambda 表达式对元组列表进行排序,其中 x[1] 表示元组的第二个元素(即数量),reverse=True 表示按从大到小排序。
3. 输出结果列表。可以直接输出 result 变量,例如:
```python
print(result)
```
完整的代码如下:
```python
data = {}
with open("data.txt", "r") as f:
for line in f:
items = line.strip().split(",")
category = items[0]
count = int(items[1])
data[category] = data.get(category, 0) + count
result = sorted(data.items(), key=lambda x: x[1], reverse=True)
print(result)
```
执行上述代码,可以得到一个按数量从大到小排序的种类列表,其中每个元素是一个包含种类和数量的元组。
阅读全文