将两个列表合并到带有异常的词典中是一项挑战

2024-06-16 11:34:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将两个列表合并到一个字典中,同时排除第一个列表中的整数和第二个列表中的字符串

list1 = ["A","B","C","D","E" ,"F", 1 ,"G", 3 ,"H","I","J","K","L"]
list2 = [20 ,27 , "Arm","Leg", 13 , 24 ,"Head", 75 , 64 , 71 ,"Ankle", 82 , 45 , 23]

我尝试使用以下代码:

dictchallenge ={[x for x in list1 if  isinstance(x, str)][i]: [x for x in list2 if isinstance(x, int)][i] for i in range(len([x for x in list1 if  isinstance(x, int)]))}
print(dictchallenge)

代码的输出为:

{'A': 20, 'B': 27}

代码只是将键列表中的前两个字符串与值列表中的前两个整数合并,我需要将第一个列表中的所有键与第二个列表中的所有值合并,如下所示:

{'A': 20, 'B': 27, 'E': 13, 'F': 24, 'G': 75, 'H': 71, 'J': 82, 'K': 45, 'L': 23 }

如果有人能帮我,谢谢


Tags: 字符串代码in列表forif字典整数
3条回答

您可以首先从两个列表中获取您不需要的索引:

>>> indexes = [i for i in range(len(list1)) if not isinstance(list1[i], str)]
>>> indexes += [i for i in range(len(list2)) if not isinstance(list2[i], int)]

然后,您可以去掉不需要的元素:

>>> clean_list1 = [list1[i] for i in range(len(list1)) if i not in indexes]
>>> clean_list2 = [list2[i] for i in range(len(list2)) if i not in indexes]

最后,您可以压缩这两个列表:

>>> dict(zip(clean_list1, clean_list2))
{'A': 20, 'B': 27, 'E': 13, 'F': 24, 'G': 75, 'H': 71, 'J': 82, 'K': 45, 'L': 23}

使用一个for循环并检查list1是否具有键asstring 并且list2具有作为int的值,如果是,则将其添加到dictoutput和增量ij

list1 = ["A","B","C","D","E" ,"F", 1 ,"G", 3 ,"H","I","J","K","L"]
list2 = [20 ,27 , "Arm","Leg", 13 , 24 ,"Head", 75 , 64 , 71 ,"Ankle", 82 , 45 , 23]

i=0
j=0
output = {}
for i in range(len(list1)):
    if isinstance(list1[i] , str):
        if isinstance(list2[i] , int):
            output[list1[i]] = list2[i]
            j+=1
        i+=1
print(output)

输出:

{'A': 20, 'B': 27, 'E': 13, 'F': 24, 'G': 75,
 'H': 71, 'J': 82, 'K': 45, 'L': 23}

试试这个:

list1 = ["A", "B", "C", "D", "E", "F", 1, "G", 3, "H", "I", "J", "K", "L"]
    list2 = [20, 27, "Arm", "Leg", 13, 24, "Head", 75, 64, 71, "Ankle", 82, 45, 23]
    d={}
    for i in list1:
        for j in list2:
            if str(j).isdigit()==True and list1.index(i)==list2.index(j):
                d[i]=j
    
print(d)

相关问题 更多 >