python中的父子循环

2024-05-15 01:02:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串列表,如下所示

headers = ['Header_1|C11', 'Header_1|C12', 'Header_2|C21', 'Header_2|C22', 'Header_2|C23']

我想创建一个循环,它将给出如下结果

result_string = "Header_1 C11 C12 Header_2 C21 C22 C23"

下面的脚本打印“子”值,但不打印标题。如何扩展它以获得上面的result_string

childstr=''

for i in headers:
    child=i.split('|')[1]
    childstr += child + '   '

print childstr 

Tags: 字符串脚本child标题列表stringresultheaders
3条回答

你能试试下面吗

prev_header = ''
childstr=''
for i in headers:
    header = i.split('|')[0]
    child=i.split('|')[1]
    if prev_header != header:
        childstr += header + '   '
        childstr += child + '   '
    else:
        childstr += child + '   '
    prev_header = header
        #childstr += child + '   '
print (childstr) 

请检查一下这个

Stringlst = ['Header_1|C11', 'Header_1|C12', 'Header_2|C21', 'Header_2|C22', 'Header_2|C23']


result_dict = {}
for item in Stringlst :
    key, value = item.split("|")
    if result_dict.get(key):
        result_dict[key].append(value)
    else:
        result_dict[key] = [value]

out_put_str = ""
for key, value in result_dict.items():
    out_put_str += key+" " + " ".join(value)+ " "
print(out_put_str)

这是一种使用简单迭代和dict.setdefault的方法。您也可以使用collections.defaultdict代替setdefault

Ex:

headers = ['Header_1|C11', 'Header_1|C12', 'Header_2|C21', 'Header_2|C22', 'Header_2|C23']
r = {}     #using defaultdict  > r = collections.defaultdict(list)

for h in headers:
    key, value = h.split("|")
    r.setdefault(key, []).append(value)

result = " ".join("{} {}".format(k, " ".join(v)) for k, v in r.items())
print(result)

输出:

Header_1 C11 C12 Header_2 C21 C22 C23

相关问题 更多 >

    热门问题