Python;使用多个索引重新修改指令值

2024-04-19 08:45:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从基于值(foo)的字典中检索消息;我面临的问题是,每个消息都有多个索引。事实证明,当索引值发生变化时,很难检索到相同的消息。我知道这可能没有多大意义,但我希望通过查看代码它会有所帮助。你知道吗

foo=int(input('What is foo'))#foo is always 1 to 10
bar={10:'10/10',
 (8 or 9):'message1',
 (6 or 7):'message2',
 (4 or 5):'message3',
 (2 or 3):'message4',
 (0 or 1):'message5',
print(bar[foo])

这段代码是一个更大的程序的一部分,只是这部分我无法解决。Foo是预先确定的,因此用户不会在整个程序中输入它。我已经尝试了多个修复这个问题和任何帮助将不胜感激。你知道吗


Tags: orto代码程序消息input字典foo
3条回答

有很多方法可以解决这个问题。你可以多次输入一些字典值。 但是,如果确实需要复合键,可以将字典的键存储为2元组(10元组为1元组)。然后可以首先检索存储foo的键:

foo = int(input('What is foo'))
bar = {(10,):'10/10',
 (8, 9):'message1',
 (6, 7):'message2',
 (4, 5):'message3',
 (2, 3):'message4',
 (0, 1):'message5'}
print(bar[foo])

key = next(k for k in bar.keys() if foo in k)

然后检索值:

print(bar[key])

例如,如果要使用单个整数作为键,可以使用数学将每个键简化为单个唯一值

bar = {5:'10/10',     # 10
       4:'message1',  # 9 or 8
       3:'message2',  # 7 or 6
       2:'message3',  # 5 or 4
       1:'message4',  # 3 or 2
       0:'message5'}  # 1 or 0

>>> foo = 7
>>> bar[foo // 2]
'message2'

可以使用不同的键重复字典中的值。你知道吗

bar={10:'10/10',
    9: 'message1',
    8:'message1',
    7:'message2',
    6:'message2',
    5:'message3',
    4:'message3',
    3:'message4',
    2:'message4',
    1:'message5',
    0:'message5',
    }

或者

select = {9: 8,
          7: 6,
          5: 4,
          3: 2,
          1: 0}

foo = select.get(foo, foo) # If the value isn't found return the original value

bar={10:'10/10',
    8:'message1',
    6:'message2',
    4:'message3',
    2:'message4',
    0:'message5',
    }

 print(bar[foo])

或者用数学。我

相关问题 更多 >