在Python中,传递dict键时是否可以使用外部函数来查找该字典中的其他键?

时间:2013-05-15 16:08:41

标签: python dictionary

假设我有以下代码:

def function(k):
    # do something here

d = { 0: 'a', 1: 'b', 2: 'c' }

function(d[0])

function是否可以找出d中的其他键?例如,有这样的事情:

def function(k):
    print k.__parent__.keys()

我认为没有这样的功能(因为这将是一个重大的安全问题)。但是我对技术实现知之甚少。

编辑:动机是如果Python中的所有内容都是对象,是否有可能找到绑定到它的其他对象,在本例中是父词典。

2 个答案:

答案 0 :(得分:5)

不,没有。 Python中的值不会跟踪它们的来源,也不会彼此“绑定”。容器可以引用其他值,但由于任何值都可以从多个位置引用,因此跟踪反向引用没有任何意义。

function()的角度来看,以下两次调用之间绝对存在 no 差异:

function(d[0])
function('a')

在这两种情况下,函数中的k都绑定到python字符串值'a'

如果在函数中需要更多上下文,则需要明确地传递它:

def function(key, mapping):
    k = mapping[key]

function(0, d)

现在你也有了字典。

答案 1 :(得分:0)

尝试:

def function(dict, letter):
    for thing in dict:
        thing_string = str(thing)
        if str(letter) in thing_string:
            print dict[thing]

my_dict = { 0: 'a', 1: 'b', 2: 'c' }
function(my_dict, "d")