如何解决Python 在字符串元素列表中搜索模式
我正在字符串元素列表中搜索模式。
目前我的代码运行良好,但有些数据无法产生所需的结果。
ss = '''
X A
B A
A C
A D
E A
A F
'''.strip()
lst = []
for r in ss.split('\n'):
lst.append(r.split())
paths = []
for e in lst:
# each row in source data
pnew = [] # new path
for p in paths:
if e[0] in p: # if start in existing path
if p.index(e[0]) == len(p)-1: # if end of path
p.append(e[1]) # add to path
else:
pnew.append(p[:p.index(e[0])+1]+[e[1]]) # copy path then add
break
else: # loop completed,not found
paths.append(list(e)) # create new path
if len(pnew): # copied path
paths.extend(pnew) # add copied path
print('\n'.join([' -> '.join(e) for e in paths]))
我得到的是
X -> A -> C
B -> A
X -> A -> D
E -> A
X -> A -> F
我要求的结果是什么
B -> A -> C
X -> A -> D
E -> A -> F
X -> A -> C
B -> A -> D
B -> A -> F
X -> A- > F
基于 Cr & Dr 我正在尝试获取模式(Cr & Dr 是可选的)
X A Cr
B A Cr
A C Dr
A D Dr
E A Cr
A F Dr
解决方法
使用 pandas
更容易处理:
import pandas as pd
from io import StringIO
ss = '''
X A
B A
A C
A D
E A
A F
'''.strip()
df = pd.read_csv(StringIO(ss),sep=' ',names=['source','target'])
df = df.merge(df,how='inner',left_on='target',right_on='source')
df = df[['source_x','target_x','target_y']]
df.apply(lambda x: ' -> '.join(x),axis=1).sort_values()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。