Skip to main content
 首页 » 编程设计

python之使用python遍历多个列表

2025年05月04日22bhlsheji

您好,我已经通过 Stackoverflow 进行了搜索,并且一直在努力应对以下与列表相关的挑战,但作为 Python 新手,我感到很困惑。

我目前有 2 个测试数据列表,一个包含用户信息(新旧用户 ID 后跟名称数据),另一个包含用户和页码的列表列表 (eeIDlist)。我想检查与特定用户关联的页码是否与新 ID 或旧 ID 匹配,如果任一 ID 匹配,则将页码追加回原始列表。

我已经将列表匹配并 append 到 CompanyName 列表,但该列表似乎呈指数级增长并且代表所有用户页面数据,而不仅仅是与个人关联的页码。

热烈欢迎建议!

我的代码如下:

pagenumbers=[] 
 
for i in CompanyNameList: 
 
    for ee in i: 
        for eeid in eeIDlist: 
            try: 
                if (str(eeid[1]) in ee): 
                    pagenumbers.extend([eeid[0]])  
                    i.append(pagenumbers) 
                    i.append([eeid[0]]) 
            except ValueError: 
                print "Not a valid number" 
 
print i 

我的源数据如下:

CompanyNameList: 
 
[['144128', '40013', 'John', 'Dodge', 'F', 'DODGEJ'],['144130', '40023', 'John', 'Apple', 'Z', 'APPLEJ'],['144131', '40050', 'Gerald', 'Key', 'M', 'KEYG'],['144138', '40074', 'Saul', 'VanWinkle', 'VANWINKLE']]  

用户 ID 和页码 eeID列表:

[[144128,1],[144138,12],[144130,6],[144131,9],[40013,153],[40074,310],[40023, 210],  
[40050,250]]  

所需的输出列表:

[['144128', '40013', 'John', 'Dodge', 'F', 'DODGEJ',[1,153]], 
['144130', '40023', 'John', 'Apple', 'Z', 'APPLEJ',[6,210]],  
['144131', '40050', 'Gerald', 'Key', 'M', 'KEYG',[9,250]], 
['144138', '40074', 'Saul', 'VanWinkle', 'VANWINKLE',[12,310]]] 

请您参考如下方法:

您的代码中有一些错误。

  • 您不需要循环for ee in i。例如,您想检查 '123214' in ['144128', '40013', 'John', 'Dodge', 'F', 'DODGEJ']如果 '144128'、'40013' 和 'John' 等中的 123214 则不是。

  • 此外,您不需要 i.append([eeid[0]]),因为您正在处理 pagenumbers,这就足够了;您不希望结果中出现重复项。

  • 此外,pagenumbers 应该 append 在 for 循环之外。否则,您将获得多个 append 列表。

以下是修复代码错误的代码:

CompanyNameList = [ 
    ['144128', '40013', 'John', 'Dodge', 'F', 'DODGEJ'], 
    ['144130', '40023', 'John', 'Apple', 'Z', 'APPLEJ'], 
    ['144131', '40050', 'Gerald', 'Key', 'M', 'KEYG'], 
    ['144138', '40074', 'Saul', 'VanWinkle', 'VANWINKLE']] 
 
eeIDlist = [[144128,1], 
            [144138,12], 
            [144130,6], 
            [144131,9], 
            [40013,153], 
            [40074,310], 
            [40023, 210],  
            [40050,250]]  
 
pagenumbers=[] 
 
for i in CompanyNameList: 
    for eeid in eeIDlist: 
        try: 
            # eeid[0] not eeid[1]  
            if (str(eeid[0]) in i):  
                # eeid[1] not eeid[0] 
                pagenumbers.extend([eeid[1]]) 
        except ValueError: 
            print ("Not a valid number") 
    i.append(pagenumbers) 
    pagenumbers = [] 
 
print CompanyNameList 

输出:

[['144128', '40013', 'John', 'Dodge', 'F', 'DODGEJ', [1, 153]],  
 ['144130', '40023', 'John', 'Apple', 'Z', 'APPLEJ', [6, 210]],  
 ['144131', '40050', 'Gerald', 'Key', 'M', 'KEYG', [9, 250]],  
 ['144138', '40074', 'Saul', 'VanWinkle', 'VANWINKLE', [12, 310]]]