最短分配方式;A或B“;在Python中创建一个变量?
大家好,Python专家们 我想知道,如果“a”为真(即存在),是否有更短的方法将值“a”分配给变量,如果不是,是否有更短的方法将值“B”分配给变量 假设我有:最短分配方式;A或B“;在Python中创建一个变量?,python,ruby,ternary-operator,Python,Ruby,Ternary Operator,大家好,Python专家们 我想知道,如果“a”为真(即存在),是否有更短的方法将值“a”分配给变量,如果不是,是否有更短的方法将值“B”分配给变量 假设我有: mydict = {'a': 'apple', 'b': 'banana', 'c': 'Cherry'} 那么,据我所知,在这个mydict变量中,分配一个不作为键存在的值的最短(好吧,一行)方法是: myvar = mydict['m'] if 'm' in mydict else 'Melon' 但是有没有比这更短的方法呢 在
mydict = {'a': 'apple', 'b': 'banana', 'c': 'Cherry'}
那么,据我所知,在这个mydict变量中,分配一个不作为键存在的值的最短(好吧,一行)方法是:
myvar = mydict['m'] if 'm' in mydict else 'Melon'
但是有没有比这更短的方法呢
在Ruby中,我会这样说:
myvar = mydict[:m] || 'Melon'
只是想知道。提前谢谢 在这种特殊情况下(从字典中获取项目),有一个可用的快捷方式—get
方法,它允许默认值
myvar = mydict.get('m', 'Melon')
我会考虑使用该方法来改进<代码> I/EX/<代码>版本。
myvar = mydict.get('m', 'melon')
你可以试试:
myvar = mydict.get('m', 'melon')
其中,如果找不到键“m”,则第二个参数为默认值
请参阅翻译回Ruby,这将是
myvar=mydict.fetch('m','mella')
哦,这更像是我想要做的!非常感谢你!在Ruby中,mydict[:m]
可能返回与Python的None
等价的值。那么,如何将None
存储在Python dict中呢?Ruby版本似乎做不到同样的事情。字典查找的结果为“true”(即满足if测试)与字典中存在的值不同。如果该值存在但为“false”(Python中的None
、false
、空列表等都是false-ish值;Ruby可能类似)。@Karl Knechter:Ruby中只有false
和nil
为false。如果数组或字符串为空,则if语句中的零-all返回true。(Python的None
类似于Ruby的nil
)