0

第一个列表包含类别,第二个列表包含该类别的项目。

例如:

list1 = {"vehicle", "fruits", "mobile phone", etc.....}
list2 = {"vehicle"=>"toyota", "vehicle"=>"honda", "vehicle"=>"..", "fruits"=>"orange", "fruits"=>"apple", "fruits"=>"...", "mobile phone"=>"nokia", "mobile phone"=>"samsung", "mobile phone"=>"iphone", "mobile phone"=>"...."}

所以如果我以这种格式显示它:

Category 1
-items
-items
-items
-items

Category 2
-items
-items
-items
-items

Category 3
-items
-items
-items
-items

Category n
-items
-items
-items
-items

目前我正在遍历这两个列表,检查是否属于此列表的项目并显示它。有没有更好的方法来显示这些项目和类别?因为你看看我是否要单独显示这些类别,我将不得不循环 3 次。

这是我的意思的一个例子。

<!--display vehicle-->
for a in list1:
  for b in list2:
   if a==vehicle && a == b.key:
     print(a)
     print(b.value)
   end if
  end for
end for

<!--display fruits-->
for a in list1:
  for b in list2:
   if a==fruits && a == b.key:
     print(a)
     print(b.value)
   end if
  end for
end for

<!--display mobile phone-->
for a in list1:
  for b in list2:
   if a==mobile phone && a == b.key:
     print(a)
     print(b.value)
   end if
  end for
end for
4

2 回答 2

0

尝试使用 HashTable 而不是第二个列表。

这样,您将可以直接访问类别项目,而无需搜索它们。这使它成为2个循环,实际上是两个容器中所有项目的1个

如果您开发 OOP,我建议使用具有类别和项目列表的对象。而只是创建这些对象的列表 - 一个循环。

于 2013-09-03T09:15:16.857 回答
0

恕我直言,只需从内部测试中删除硬编码值即可解决您的问题

<!--display joined -->
for a in list1:
  for b in list2:
   if a == b.key:
     print(a)
     print(b.value)
   end if
  end for
end for

就这样

于 2013-09-03T09:23:42.943 回答