【问题标题】:python splitting and re-combining strings of a listpython拆分和重新组合列表的字符串
【发布时间】:2019-08-05 09:38:45
【问题描述】:

我的 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"]
]  

问题是:我如何将重新排序的实例和它们的 pin 重新组合到它们的原始字符串中?我应该将子列表存储到字典中吗?管脚上不做任何处理。

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

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

【问题讨论】:

  • 然后去听听
  • 介意告诉我们怎么做?
  • L 列表中的顺序重要吗?
  • L列表中的订单处理后会重新排列

标签: python string list data-structures


【解决方案1】:

然后你可以试试字典:

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'}]

【讨论】:

    【解决方案2】:
    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']]
    

    【讨论】:

    • 如何合并拆分的元素?
    • @JonJ [[L_instances[i][0]+'.' +L_pins[i][0], L_instances[i][1]+'.' +L_pins[i][1]] for i in range(len(L_instances))]
    • L 中的顺序在处理后会重新排列,这意味着错误的引脚将被组合回错误的实例
    • @JonJ 发布你的例子然后我可以检查问题
    • 为了更清晰,我重新编辑了原始问题
    猜你喜欢
    • 2021-06-10
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    相关资源
    最近更新 更多