Python相当于Ruby的.find

2024-09-28 22:07:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将以下Ruby方法实现为Python方法:

CF = {:metre=>{:kilometre=>0.001, :metre=>1.0, :centimetre=>100.0}, :litre=>{:litre=>1.0, :millilitre=>1000.0, :imperial_pint=>1.75975}}

def common_dimension(from, to)
  CF.keys.find do |canonical_unit|
    CF[canonical_unit].keys.include?(from) &&
    CF[canonical_unit].keys.include?(to)
  end
end

表现为:

^{pr2}$

实现这一点的“Pythonic”方法是什么?在


Tags: to方法fromincludeunitkeyscfend
2条回答

下面用python编写的ruby逻辑代码。在

CF={"metre":{"kilometre":0.001, "metre":1.0, "centimetre":100.0}, "litre":{"litre":1.0, "millilitre":1000.0, "imperial_pint":1.75975}}

def common(fr,to):
    for key,value in CF.items():
        if (fr in value) and (to in value):
            return key   

print(common('metre','centimdetre'))
metre
print(com('metre','centimdetre'))
None
******************

single line function 
com = lambda x,y:[key for key,value in CF.items() if (x in value) and (y in value)]
print(com('metre','centimdetre'))
['metre']

Ruby和Python的其他选项。在

对于Ruby:

cf = {:metre=>{:kilometre=>0.001, :metre=>1.0, :centimetre=>100.0}, :litre=>{:litre=>1.0, :millilitre=>1000.0, :imperial_pint=>1.75975}}

from = :litre
to = :millilitre
cf.select { |k, v| ([from, to] - v.keys).empty? }.keys
#=> [:litre]

对于Python:

^{pr2}$

相关问题 更多 >