我正在使用包含以下元素的嵌套串列:
A_list = ("A1","A2","A3")
B_list = ("B1","B2","B3")
Nested_List= [A_list,B_list]
def list_sort(input_value,m_list):
m = 0
for x in m_list:
for y in m_list[m]:
if input_value == y:
print(m_list[m],",", y)
m = 1
input_value = "A2"
list_sort(input_value,Nested_List)
我正在使用搜索演算法回傳匹配的字串元素和相應的子串列名稱,例如:A_list, A2。
不幸的是,當我這樣做時,我得到:('A1','A2','A3'), A2.
有沒有什么辦法解決這一問題?
uj5u.com熱心網友回復:
變數的名稱不是其內容的一部分,因此您需要將其添加到資料結構中。一種方法是將其設為字典而不是串列(串列):
A_list = ("A1","A2","A3")
B_list = ("B1","B2","B3")
Nested_List= {"A_list":A_list, "B_list":B_list}
然后你的函式可以通過字典的專案來執行搜索:
def list_sort(input_value,m_list):
for listName,content in m_list.items():
if input_value in content:
print(listName, input_value, sep=", ")
有一種方法可以從其內容中獲取變數名,但它并不可靠,絕對不是您在現實生活中應該使用的東西:
def list_sort(input_value,m_list,context=locals()):
m = 0
for x in m_list:
for y in m_list[m]:
if input_value == y:
listName = next(n for n,c in context.items() if id(c) == id(x))
print(listName,",", y)
m = 1
uj5u.com熱心網友回復:
我使用字典解決了這個問題:
A_list = ("A1","A2","A3")
B_list = ("B1","B2","B3")
Nested_List= [A_list,B_list]
List_Dict = {("A1","A2","A3"):"A_list",("B1","B2","B3"):"B_list"}
def list_sort(input_value,m_list):
m = 0
for x in m_list:
for y in m_list[m]:
if input_value == y:
print(List_Dict[m_list[m]],",", y)
m = 1
input_value = "A2"
list_sort(input_value,Nested_List)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/322287.html
