猿问

从字典内列表中的值中查找索引

有谁知道如何从字典 1 上的字典 2 中获取值的索引 .. 像这样:


Dictionary_1= {A: [Tom, Jane, Joe]; B: [Joana, Clare, Tom]; C: [Clare, Jane, Joe]}


Dictionary_2 = {A: Tom; B: Clare; C: Jane}


RESULT = {A: 1; B: 2; C: 2}

编辑:对不起,伙计们..首先我很困惑,忘记了我需要它以“0”而不是“1”开头。我遇到了问题,但这是因为我在字典 1 中的列表是 unicode 格式而不是列表。


另外..在我在这里使用的示例中,我后来注意到两个字典中都存在键,但是在我编写的代码中它不是同一件事。我没有在这里发布原件,因为它更大,所以我尽量恢复。对此也很抱歉。


所以我让它使用这段代码:


            RESULT = {}

            for x, y in Dictionary_1.items():

                for a, b in Dictionary_2 .items():

                    if x == a:

                        z = Dictionary_1[x]

                        r = eval(z)

                        if '{0}'.format(b) in r:

                            RESULT [a] = r.index('{0}'.format(b))

我知道它看起来很乱,但我还在学习。我真的很感谢你们的帮助!


慕森王
浏览 126回答 4
4回答

小怪兽爱吃肉

假设您想要基于 0 的索引,您可以使用list.index()dict comprehension:d1 = {'A': ['Tom', 'Jane', 'Joe'], 'B': ['Joana', 'Clare', 'Tom'], 'C': ['Clare', 'Jane', 'Joe']}d2 = {'A': 'Tom', 'B': 'Clare', 'C': 'Jane'}result = {k: d1[k].index(v) for k, v in d2.items()}print(result)# {'A': 0, 'B': 1, 'C': 1}如果您希望索引从 开始1,那么您可以这样做d1[k].index(v) + 1。

catspeake

您可以尝试使用dict comprehension。dict1={'A':['Tom','Jane','Joe'],'B':['Joana','Clare','Tom'],'C':['Clare','Jane','Joe']}dict2={'A':'Tom','B':'Clare','C':'Jane'}result={k:dict1[k].index(v)+1 for k,v in dict2.values()}# {'A': 1, 'B': 2, 'C': 2}#Or# {k:dict1.get(k).index(v)+1 for k,v in dict2.items()}

料青山看我应如是

为您提供易于理解的解决方案d1 = {'A': ['Tom', 'Jane', 'Joe'], 'B': ['Joana', 'Clare', 'Tom'], 'C': ['Clare', 'Jane', 'Joe']}d2 = {'A': 'Tom', 'B': 'Clare', 'C': 'Jane'}output = {}for k,v in d2.items():    output[k] = d1[k].index(v)+1print(output)

米琪卡哇伊

这当然不是最好的方法,但这是我很快做的:dict1 = {0: ['Tom', 'Jane', 'Joe'], 1: ['Joana', 'Clare', 'Tom'], 2: ['Clare', 'Jane', 'Joe']}dict2 ={0: 'Tom', 1: 'Clare', 2: 'Jane'}result = {}val_list = list(dict1.values())for i in range(0,len(dict1)):    result.update({i : val_list[i].index(dict2[i])})print(result)
随时随地看视频慕课网APP

相关分类

Python
我要回答