Python中的Ruby代码相当于什么?

时间:2018-09-07 01:22:20

标签: python ruby dictionary hash

#Ruby Code
si=1
gw=0
linkedNodes=[{1=>2},{1=>0}]
puts "found node" if linkedNodes.include?({si=>gw})

我正在尝试找出是否有办法在Python中执行类似的操作。我正在搜索散列数组以查找完整散列上的匹配项,使用

在Ruby中这非常容易做到
include?() 

方法。我发现了很多有关按键或按值搜索哈希表的信息,但我试图匹配整个哈希(键和值)。我读到有关使用lambda的过滤器选项的信息,但是当我开始获取异常并尝试使用try:except:blocks时,很快就变成了一片混乱。

2 个答案:

答案 0 :(得分:2)

假设您的意思是linkedNodes = [{1 => 2}, {1 => 0}],这是对python的直译:

>>> si=1
>>> gw=0
>>> linkedNodes = [{1:2},{1:0}]
>>> if {si:gw} in linkedNodes:
...   print("found node")
#⇒ found node

答案 1 :(得分:0)

普通或花园品种Python没有这样的东西。您将分两步进行操作:首先检查密钥,然后检查值:

if si in linkedNodes and linkedNodes[si] == gw:
    # do whatever

and短路,因此如果si不是linkedNodes的键,则不会评估linkedNodes[si] == gw;在这种情况下,尝试访问该元素不会出错。

如果要这样做,可以创建一个dict子类,其中in的行为方式(或可选地)。我将作为练习来离开。