有没有办法在python中进行条件字典定义?

7xllpg7q  于 2022-12-30  发布在  Python
关注(0)|答案(2)|浏览(153)

我是Pythonizer的作者,我正在尝试将以下代码从perl转换为python:

%entity2char = (
 # Some normal chars that have special meaning in SGML context
 amp  => '&',     # ampersand
 'gt' => '>',     # greater than
 # PUBLIC ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML
 AElig  => chr(198),  # capital AE diphthong (ligature)
 Aacute => chr(193),  # capital A, acute accent
 ( $] > 5.007 ? (
  'OElig;'    => chr(338),
  'diams;'    => chr(9830),
  ) : ())
);

我们不应该在这里讨论的人工智能推荐:

entity2char = {'amp': '&', 'gt': '>', 'AElig': chr(198), 'Aacute': chr(193), 
       **{'OElig;': chr(338), 'diams;': chr(9830), } if 5.034 > 5.007 else **{}})

但是这会产生一个指向if的语法错误,你知道如何把这个表达式从perl转换成python吗?如果可能的话,它应该是一行代码(例如,代码可以嵌套在任意表达式中,而不是基本的赋值语句中)。

zc0qhyus

zc0qhyus1#

如果要有条件地在构建的dict中包含某些键值对,可以使用dict解包,其中解包的目标是空dict或具有这些键值对的dict,具体取决于条件。
例如,

{'a': 1, **({'b': 2, 'c': 3} if x > 3 else {})}

将生成一个dict,该dict将'a': 1作为键值对,并且如果x > 3条件成立,还将具有'b': 2'c': 3

iqjalb3h

iqjalb3h2#

实体2字符={“放大器”:'&','gt':'〉','艾利格':chr(198),“急性”:chr(193),({'OElig;':chr(338),'直径;':chr(9830),}如果5.034〉5.007否则{})}
使用
(if_表达式)

相关问题