Fal*_*rri 48 python syntax dictionary
我想知道是否有任何方法来填充字典,以便您有多个键映射到相同的值,而不是说:
d = {1:'yes', 2:'yes', 3:'yes', 4:'no'}
Run Code Online (Sandbox Code Playgroud)
我正在考虑以下几点:
d = {*(1,2,3):'yes', 4:'no'}
Run Code Online (Sandbox Code Playgroud)
这显然是语法错误.
有没有一个相当简单的方法可以做到这一点,没有太多的混淆?(我不打代码高尔夫,但我也不需要反复写同样的东西.但是,任何与代码高尔夫相关的答案都会受到赞赏,因为代码高尔夫很棒=]).
编辑:
我可能选了一个坏榜样.这就是我想要做的:
d = {*('READY', 95): 'GPLR2_95', 'CHARGING': 'GPLR3_99', 'PROTECTION': 'GPLR3_100', 'CONNECTED': 'GPLR3_101', 'ERROR':'GPLR3_102'}
Run Code Online (Sandbox Code Playgroud)
我期望它扩展到的是:
d = {'READY':'GPLR2_95', 95: 'GPLR2_95', ...}
Run Code Online (Sandbox Code Playgroud)
编辑 - >编辑:
我知道这是愚蠢的,完全没必要,但我的目标是在一条线上做出这个声明.这显然不应该限制任何响应和编写代码只是因为它适合1行是愚蠢的.但是我正在编写一个模块级别的常量字典,如果它是单个衬里那将会很好.
Tim*_*ker 69
你可以把它转过来:
>>> d1 = {"yes": [1,2,3], "no": [4]}
Run Code Online (Sandbox Code Playgroud)
然后"反转"那个字典:
>>> d2 = {value:key for key in d1 for value in d1[key]}
>>> d2
{1: 'yes', 2: 'yes', 3: 'yes', 4: 'no'}
Run Code Online (Sandbox Code Playgroud)
怎么样:
501 $ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = {"q":1}
>>> print a
{'q': 1}
>>> a["q"]
1
>>> a["r"] = a["s"] = a["t"] = 2
>>> a
{'q': 1, 's': 2, 'r': 2, 't': 2}
>>>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
74289 次 |
最近记录: |