将字典与列表作为值进行比较,将字典与字典进行比较以生成值

问题描述 投票:1回答:2

拜托,我需要帮助比较下面的两个词典和一个生成器。

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中的键和值。代码工作正如我在上面尝试过的那样。但如果事情请帮忙,我不能继续这样做。

python python-3.x list dictionary
2个回答
1
投票

您可以直接索引,根据需要处理异常:

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

# 3
# 2

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


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])
© www.soinside.com 2019 - 2024. All rights reserved.