Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最短分配方式;A或B“;在Python中创建一个变量?_Python_Ruby_Ternary Operator - Fatal编程技术网

最短分配方式;A或B“;在Python中创建一个变量?

最短分配方式;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' 但是有没有比这更短的方法呢 在

大家好,Python专家们

我想知道,如果“a”为真(即存在),是否有更短的方法将值“a”分配给变量,如果不是,是否有更短的方法将值“B”分配给变量

假设我有:

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