为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕森王 2022-10-06 19:09:22
有谁知道如何从字典 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))我知道它看起来很乱,但我还在学习。我真的很感谢你们的帮助!
查看完整描述

4 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

假设您想要基于 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。


查看完整回答
反对 回复 2022-10-06
?
catspeake

TA贡献1111条经验 获得超0个赞

您可以尝试使用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()}


查看完整回答
反对 回复 2022-10-06
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

为您提供易于理解的解决方案


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)+1


print(output)


查看完整回答
反对 回复 2022-10-06
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

这当然不是最好的方法,但这是我很快做的:


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)


查看完整回答
反对 回复 2022-10-06
  • 4 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号