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

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

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

犯罪嫌疑人X 2021-10-12 15:21:07
拜托,我需要帮助将下面的两个字典与生成器进行比较。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 中的键和值的值。代码像我上面那样工作。但我不能继续做如果 - 如果有事请帮忙。
查看完整描述

2 回答

?
慕侠2389804

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

您可以直接索引,酌情处理异常:


for k, v in d.items():

    try:

        print(r[k][v])

    except (KeyError, IndexError):

        pass


# 3

# 2

KeyError如果第一个索引器k不是字典键,则可能会引发。IndexError如果v给定字典列表值的第二个索引器太大,则可能会引发。您应该仔细定义要捕获的错误以及如何管理它们。


查看完整回答
反对 回复 2021-10-12
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您可以使用以下方法利用每个键中的值的长度和字典本身来实现所需的结果:


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 < len(r) and v < len(r[k]):

        print(r[k][v])


查看完整回答
反对 回复 2021-10-12
  • 2 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信