有没有办法缩短这个代码?

如果a, b都在DIC中,或者a-foo, b-foo在DIC中,或者a-bar, b-bar在DIC中,我想打印一些东西.将-foo-bar视为固定值.

我可以用or语句加入多个if-S吗?

dict看起来像这样:

defaultdict(<class 'set'>, {'key1': {'elem1', 'elem2'}})
if "a" in my_dic["key1"] and "b" in my_dic["key1"]:
    print("Exists")
if "a-foo" in my_dic["key1"] and "b-foo" in my_dic["key1"]:
    print("Exists")
if "a-bar" in my_dic["key1"] and "b-bar" in my_dic["key1"]:
    print("Exists") 

推荐答案

这很好地概括为N个条目.

valuepairs = (("a", "b"), ("a-foo", "b-foo"), ("a-bar", "b-bar"))
if any(all(key in my_dic["key1"] for key in pair) for pair in valuepairs):
    print("Exists")

您还可以像这样缓慢地生成值对:

roots = ("a", "b")
extensions = ("", "-foo", "-bar")
valuepairs = ((root + extension for root in roots) for extension in extensions)

Python相关问答推荐

使用mySQL的SQlalchemy过滤重叠时间段

C#使用程序从Python中执行Exec文件

无法使用requests或Selenium抓取一个href链接

Python解析整数格式说明符的规则?

部分视图的DataFrame

Scrapy和Great Expectations(great_expectations)—不合作

计算天数

需要帮助重新调整python fill_between与数据点

解决调用嵌入式函数的XSLT中表达式的语法移位/归约冲突

python panda ExcelWriter切换动态公式到数组公式

在代码执行后关闭ChromeDriver窗口

从旋转的DF查询非NaN值

为什么dict. items()可以快速查找?

如何在Python中自动创建数字文件夹和正在进行的文件夹?

如何在Python中解析特定的文本,这些文本包含了同一行中的所有内容,

对于标准的原始类型注释,从键入`和`从www.example.com `?

如果服务器设置为不侦听创建,则QWebSocket客户端不连接到QWebSocketServer;如果服务器稍后开始侦听,则不连接

使用元组扩展字典的产品挑战

PyTorch变压器编码器中的填充掩码问题

极地数据帧:ROLING_SUM向前看