首页 > 解决方案 > 在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)

标签: pythonpython-3.x

解决方案


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")

推荐阅读