gpt4 book ai didi

python - Python中if-else执行的随机顺序

转载 作者:太空宇宙 更新时间:2023-11-03 12:19:42 25 4
gpt4 key购买 nike

这听起来像是一个奇怪的问题,但请耐心等待...

我有一个 Python 字典,其值如下:

'B': 23.6
'D': 0.6
'F': 35.9
'H': 35.9

我需要用这些值做一个 if-else 来做不同的事情,这取决于哪个大于 30。我现在的代码是这样的:

if angles['B'] > 30:
# Do stuff
elif angles['D'] > 30:
# Do other stuff
elif angles['F'] > 30:
# Do different stuf
elif angles['H'] > 30:
# Do even more different stuff

现在,当我有两个或更多相同的值时(如上面的示例数据),问题就来了。在这种情况下,我想随机选择其中一个来使用。问题是:我如何在 Python 中做到这一点?请记住,无论字典的值如何,要么什么都不做(如果它们都小于 30),要么只做一件事。

最佳答案

您可以创建一系列键/值对:

pairs = angles.iteritems()

过滤它以删除 <= 30 个元素:

filtered = [(name, value) for name, value in pairs if value > 30]

检查是否有任何选项

if filtered:

然后选择一个:

    from random import choice
name, value = choice(filtered)

更新:添加了以下...

正如 Aaron 在评论中提到的那样,这只会让您完成一半。您仍然需要根据 name 编写要执行的操作。

Aaron 建议使用包含函数的字典。基本上,您将定义一些函数来处理您的名称/值对

def thing1(name, value):
# do stuff...
def thing2(name, value):
# do different stuff...

设置字典映射名称到函数调用

routes = {'A': thing1,
'B': thing2,
'C': thing1}

并定义一个路由函数,该函数分派(dispatch)给适当的函数:

def route(pair):
name, value = pair
return routes[name](name, value)

然后您可以使用从choice 中获得的名称/值对调用route,例如

result = route(choice(filtered))

更结构化的方法可能涉及创建一个类来处理所有这些或仅处理路由方面。

关于python - Python中if-else执行的随机顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3946488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com