我想知道是否有任何方法可以填充字典,以使您有多个键映射到相同的值,而这比说的那么冗长:
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行就限制了任何响应和编写代码都是愚蠢的。但是我正在写一个模块级别的常数字典,如果它是单个衬里的话,那会很好。
您可以绕开它:
>>> 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'}