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

时间:2019-01-16 10:56:22

标签: python python-3.x list dictionary

请,我需要帮助将下面的两个词典与一个生成器进行比较。

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 个答案:

答案 0 :(得分:1)

您可以直接建立索引,并适当地处理异常:

for k, v in d.items():
    try:
        print(r[k][v])
    except (KeyError, IndexError):
        pass

# 3
# 2
如果第一个索引器KeyError不是字典键,则可能引发

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

答案 1 :(得分:0)

您可以使用以下各项来利用每个键和字典本身的值的长度来获得所需的结果:

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])