小编典典

Python字典创建语法

python

我想知道是否有任何方法可以填充字典,以使您有多个键映射到相同的值,而这比说的那么冗长:

d = {1:'yes', 2:'yes', 3:'yes', 4:'no'}

我在想一些类似的事情:

d = {*(1,2,3):'yes', 4:'no'}

这显然是语法错误。

是否有一个合理的简单方法来做到这一点而又不会造成太多混淆?(我不是在玩代码高尔夫,但是我也不需要一遍又一遍地写同样的东西。但是,由于代码高尔夫很棒,所以任何与代码高尔夫相关的答案也将受到赞赏,因为)。

编辑

我可能选了一个不好的例子。这就是我想要做的:

d = {*('READY', 95): 'GPLR2_95', 'CHARGING': 'GPLR3_99', 'PROTECTION': 'GPLR3_100', 'CONNECTED': 'GPLR3_101', 'ERROR':'GPLR3_102'}

我希望将其扩展为:

d = {'READY':'GPLR2_95', 95: 'GPLR2_95', ...}

编辑- >编辑

我知道这是愚蠢的,完全没有必要,但是我的目标是在单行中进行此声明。显然,这不应该仅仅因为它适合1行就限制了任何响应和编写代码都是愚蠢的。但是我正在写一个模块级别的常数字典,如果它是单个衬里的话,那会很好。


阅读 189

收藏
2021-01-20

共1个答案

小编典典

您可以绕开它:

>>> d1 = {"yes": [1,2,3], "no": [4]}

然后“反转”该字典:

>>> d2 = {value:key for key in d1 for value in d1[key]}
>>> d2
{1: 'yes', 2: 'yes', 3: 'yes', 4: 'no'}
2021-01-20