猿问

比较字典与列表作为值和字典以生成值

拜托,我需要帮助将下面的两个字典与生成器进行比较。


r = {1:['1', '2', '3'], 2:['1', '2', '3'], 3:['1', '2', '3', '4', '5']}


d = {2: 2, 1: 4, 3: 1}


for k,v in d.items():

    if k == 2 and v == 1:

        print(r[2][1])

    if k == 2 and v == 2:

        print(r[2][2])

    if k == 2 and v == 3:

        print(r[2][3]) 

我想要做的是从 r 打印出等于 d 中的键和值的值。代码像我上面那样工作。但我不能继续做如果 - 如果有事请帮忙。


犯罪嫌疑人X
浏览 181回答 2
2回答

慕侠2389804

您可以直接索引,酌情处理异常:for k, v in d.items():    try:        print(r[k][v])    except (KeyError, IndexError):        pass# 3# 2KeyError如果第一个索引器k不是字典键,则可能会引发。IndexError如果v给定字典列表值的第二个索引器太大,则可能会引发。您应该仔细定义要捕获的错误以及如何管理它们。

蓝山帝景

您可以使用以下方法利用每个键中的值的长度和字典本身来实现所需的结果:r = {1:['1', '2', '3'], 2:['1', '2', '3'], 3:['1', '2', '3', '4', '5']}d = {2: 2, 1: 4, 3: 1}for k,v in d.items():&nbsp; &nbsp; if k < len(r) and v < len(r[k]):&nbsp; &nbsp; &nbsp; &nbsp; print(r[k][v])
随时随地看视频慕课网APP

相关分类

Python
我要回答