from collections import OrderedDict
items = OrderedDict()
with open('/home/jon/sample_data.txt') as fin:
lines = (line.strip().partition(' ')[::2] for line in fin)
for key, value in lines:
items.setdefault(key[0], []).append(value)
res = [', '.join(el) for el in zip(*items.values())]
# ['abcd, efg, hij', 'klmno, p, q']
from collections import defaultdict
result = defaultdict(list)
for line in lines:
split_line = line.split(' ')
result[split_line[0]].append(split_line[1])
您可以使用下面的方法,它考虑了顺序,这样转置dict的值就更有意义了。。。你知道吗
我在解析问题时遇到了一点问题,但根据我的猜测,这应该可以满足您的要求:
基本上你要做的是先把所有的数据连接在一起(去掉换行符),然后在关键字“ID”上拆分
在那之后,如果我正确地解释了这个问题,你会得到每一对的第二个值。这些对是用空格分隔的(由于第一行中的“.”join,所以该项中的所有内容都是空格分隔的),所以我们只需一步一步地遍历该列表,抓取其他所有项。你知道吗
一般来说,split的语法糖分比通常使用的要多一点,完整的语法是:[开始:结束:step],所以[::2]只返回其他项。你知道吗
使用default dict:
这将为您提供一个字典结果,用于存储数组中具有相同键的所有值。要获取以ID开头的行中的所有字符串,请执行以下操作:
相关问题 更多 >
编程相关推荐