python拆分和重新组合列表的字符串

时间:2019-08-05 09:38:45

标签: python string list data-structures

我的Python列表列表中有一对元素作为子列表。完整列表如下所示:

L = [
      ["ImoduleB.pinN_in", "ImoduleC.pinO_out"], 
      ["ImoduleA.pinM_in", "ImoduleB.pinN_out"],
      ["ImoduleC.pinO_in", "ImoduleD.pinP_out"]
]

ImoduleA, ImoduleB, ImoduleC, ImoduleD是我的实例名称,pinM_*, pinN_*, pinO_*, pinP_*是引脚名称。

我有兴趣隔离实例名称以进行进一步处理,我计划在处理完成后将引脚名称附加到其实例上。

L_instances = [
      ["ImoduleB", "ImoduleC"], 
      ["ImoduleA", "ImoduleB"],
      ["ImoduleC", "ImoduleD"]
]

L_pins = [
      ["pinN_in", "pinO_out"], 
      ["pinM_in", "pinN_out"],
      ["pinO_in", "pinP_out"]
]

要注意的一件事重要:... L_instances中的元素将在处理过程中重新排序。一个简单的例子是:

L_instances_processed = [
      ["ImoduleA", "ImoduleB"], # re-ordered
      ["ImoduleB", "ImoduleC"], # re-ordered
      ["ImoduleC", "ImoduleD"]
]  

问题是:如何将重新排序的实例及其图钉重新组合到原始字符串中?我应该将子列表存储到词典中吗?引脚上没有任何处理。

 L_combined = [
      ["ImoduleA.pinM_in", "ImoduleB.pinN_out"], 
      ["ImoduleB.pinN_in", "ImoduleC.pinO_out"],
      ["ImoduleC.pinO_in", "ImoduleD.pinP_out"]
]

如果有更好的拆分和重组方法,请随时提出解决方案。

2 个答案:

答案 0 :(得分:0)

您可以尝试字典:

L = [
  ["ImoduleB.pinN_in", "ImoduleC.pinO_out"],
  ["ImoduleA.pinM_in", "ImoduleB.pinN_out"],
  ["ImoduleC.pinO_in", "ImoduleD.pinP_out"]
]

k = []
for i in L:
    d = {}
    for j in i:
        s = j.split(".")
        d.update({s[0]:s[1]})
    k.append(d)
print(k)

输出:

[{'ImoduleB': 'pinN_in', 'ImoduleC': 'pinO_out'}, 
 {'ImoduleA': 'pinM_in', 'ImoduleB': 'pinN_out'}, 
 {'ImoduleC': 'pinO_in', 'ImoduleD': 'pinP_out'}]

答案 1 :(得分:0)

L = [
      ["ImoduleB.pinN_in", "ImoduleC.pinO_out"], 
      ["ImoduleA.pinM_in", "ImoduleB.pinN_out"],
      ["ImoduleC.pinO_in", "ImoduleD.pinP_out"]
] 
# split every item 
L_instances = [[i.split('.')[0] for i in x ]for x in L]
# [['ImoduleB', 'ImoduleC'], ['ImoduleA', 'ImoduleB'], ['ImoduleC', 'ImoduleD']]
L_pins= [[i.split('.')[1] for i in x ]for x in L]
# [['pinN_in', 'pinO_out'], ['pinM_in', 'pinN_out'], ['pinO_in', 'pinP_out']]