我有以下串列
lst =[['A', 'BA'], ['B', 'CB'], ['C', 'AC'], ['D', 'ED']].
我想檢查給定串列中的第一個元素是否在前一個串列的第二個元素中找到。如果是這種情況,則獲取串列的第二個元素并將其添加到前一個串列中的第二個元素。
例如。
'B'中找到'BA',因此第一個串列應如下所示['A', 'BACB']。
我嘗試了不同的方法,但以下是最接近預期結果的方法:
for i, j in enumerate(lst[1:]):
if ''.join((set(j[0])).intersection(lst[i][1])):
lst[i][1] = j[1]
> output: [['A', 'BACB'], ['B', 'CBAC'], ['C', 'AC'], ['D', 'ED']]
期望的結果如下所示:
[['A', 'BACB'], ['B', 'CBAC'], ['C', 'ACBACB'], ['D', 'ED']]
uj5u.com熱心網友回復:
不清楚下面的代碼是否可以覆寫所有的測驗用例。
# -*- coding:utf-8 -*-
lst = [['A', 'BA'], ['B', 'CB'], ['C', 'AC'], ['D', 'ED']]
# lst_map = dict(lst)
lst_map = {i[0]: i[1] for i in lst}
for k, v in lst_map.items():
for c in v:
if c != k:
lst_map[k] = lst_map.get(c, "")
result = [[k, v] for k, v in lst_map.items()]
print(result)
# Output [['A', 'BACB'], ['B', 'CBAC'], ['C', 'ACBACB'], ['D', 'ED']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/530872.html
標籤:Python列表枚举
