python 随机显示字典中的键或值;然后是对应的配对项

5jvtdoz2  于 2023-01-04  发布在  Python
关注(0)|答案(1)|浏览(144)

这是我的第一个帖子,我希望有人能善意地帮助我。
我正在寻找创建一个程序,随机显示字典键或值,然后按照用户输入,如按下键,然后显示键或值对应的项目。
字典将存储表示字母表中某些字母及其相应数字位置的值。

alphabet = {'1':'A','2':'B','3':'C','4':'D'}

这个代码将给予用户一个数字,然后按回车键后,它将显示字母表中相应的字母。

random_selection = choice(list(alphabet))
print('Guess corresponding value', random_selection)
    input('Press return to see corresponding value')
    print(alphabet[random_selection])

我如何编写程序来随机选择数字或字母?例如,它可能会显示字母B,然后在用户按下回车键后显示2。
接下来我会创建一个循环,这样程序就可以连续运行,但我相信我已经可以完成这一部分了。

ar7v8xwq

ar7v8xwq1#

既然你想执行双向查找,也就是说,通过键值来查找键,字典不是最好的选择,因为它不利于反向查找。我可能会将这个alphabet存储为一个2元组的列表,然后使用choice函数选取其中之一,然后再次随机选取元组的第一或第二元素(例如,使用相同的choice函数。
您可以将字典转换为元组列表,如下所示:

list(alphabet.items())
    • 编辑:**

您可以执行以下操作,而不是再次使用choice

from random import choice, sample

alphabet = {'1': 'A', '2': 'B', '3': 'C', '4': 'D'}

...
pair = choice(list(alphabet.items()))
key, value = sample(pair, k=2)
print('Guess corresponding value', key)
input('Press return to see corresponding value')
print(value)

sample函数返回长度为k的随机混洗子序列。

    • 编辑2:**

下面是我的第一个想法的一个可能的实现,应要求:

from random import choice

alphabet = {'1': 'A', '2': 'B', '3': 'C', '4': 'D'}

...
pair = choice(list(alphabet.items()))
key = choice(pair)
value = pair[0] if key == pair[1] else pair[1]
print('Guess corresponding value', key)
input('Press return to see corresponding value')
print(value)

我希望它是清楚的,为什么这个解决方案是不那么优雅。

相关问题