首页 > 解决方案 > 有没有办法避免嵌套循环

问题描述

我得到了两个不同的数据,我想知道是否有一种方法可以在不使用嵌套循环的情况下获取特定数据

firstdata = [[["key"],["value"]],
              [[2],["two"]],
              [[3],["three"]]]
seconddata = [[[key],["artimatic"]],
               [[2],["0+2"]],
               [[2],["1+1"]],
               [[3],["0+3"]],
               [[3],["1+2"]],
               [[3],["2+1"]]]
 //nested loop solution would look like this
 for x in firstdata:
     for y in seconddata:
         print(x[1])
         if x[0]==y[0]:
             print(y)

是否有替代解决方案可以在不使用嵌套循环的情况下循环第二个数据?

标签: pythonpython-3.xloops

解决方案


**好的,我假设 firstdata 和 seconddata 的数据结构相同:


firstdata_dict = {x[0][0]: x[1][0] for x in firstdata}
seconddata_dict = {}

for data in seconddata:

   if not seconddata_dict.has_key(data[0][0]):
       seconddata_dict[data[0][0]] = []
   seconddata_dict[data[0][0]].append(data[1][0])

for key, value in firstdata_dict.items():
    if seconddata_dict.get(key):
       # key match add your algo 
       print seconddata_dict[key]

Output:
['0+2', '1+1']
['0+3', '1+2', '2+1']
['artimatic']

推荐阅读