python - 在python中循环列表并将结果附加到列表中
问题描述
我有如下代码,
from io import StringIO
a = """ab: 01dvfgf
cd: 01fgvr windows
ab: 02hjuy linux
cd: 01erttt windows
lm: 02hjkkk"""
s = StringIO(a)
a_01 = []
a_02 =[]
zone = ['01', '02']
for elements in zone:
for line in s:
if line[4:6] == '01':
a_01.append(line)
elif line[4:6] == '02':
a_02.append(line)
print('a_01', *a_01, sep = "\n")
print('a_02', *a_02, sep = "\n")
在这段代码中,我可以将以下 4 行替换为两行,这样我就不必为不同的区域一次又一次地编写它
if line[4:6] == '01':
a_01.append(line)
elif line[4:6] == '02':
a_02.append(line)
就像是:
if line[4:6] == elements:
"a_" + elements.append(line)
解决方案
from collections import defaultdict
...
s = StringIO(a)
zones = defaultdict(list)
for line in s:
zones[line[4:6]].append(line)
for zone, lines in zones.items(): # can be iterated just as a regular dict
print(zone, *lines, sep="\n")
推荐阅读
- c# - .NET UWP MediaFrameReference 帧的大小(以字节为单位)是多少
- java - 如何使创建的班级打印?
- azure - 为 Azure SQL DB 创建 AD 用户时出现语法错误
- c++ - 如何在 Visual Studio Code 中重命名我的 a.exe 文件?
- nginx - nginx - 使用绝对文件路径提供单个 URL
- c# - log4net:使用 ILog 与 ILogger 有什么区别/优势?
- c# - TFS -“分配给”字段的工作项验证错误
- python - 比较列表并获取计数
- python - 运行 Keras 和 scikit-learn 时出现不同的异常
- log4j2 - 一旦用户编辑日志文件,将停止将 tomcat 日志附加到 catalina.log