您可以在全局对象:
def define_var(dictionary, entry, counter):
d_name = next(k for k, v in globals().items() if v is dictionary)
for i in range(counter):
print("reason%d = %s['%s_%d']" % (i + 1, d_name, entry, counter))
print(define_var(result_dict, 'start', 3))
reason1 = result_dict['start_3']
reason2 = result_dict['start_3']
reason3 = result_dict['start_3']
如果你在print(id(result_dict))
和print(id(dictionary))
中的功能当你通过result_dict
你会看到他们两个都是相同的对象,所以我们只用is
从global
字典中获得名称。
如果你想结果分配给一个理由的变量可以退货吗,是这样的:
def define_var(dictionary, entry, counter):
d_name = next(k for k, v in globals().items() if v is dictionary)
return "%s['%s_%d']" % (d_name, entry, counter)
reason = define_var(result_dict,2,3)
print(reason)
或者使用的字典:
def define_var(dictionary, entry, counter):
d_name = next(k for k, v in globals().items() if v is dictionary)
reasons = {}
for i in range(counter):
reasons["reason{}".format(i)] = "{}[{}]".format(d_name, entry)
return reasons
中的“名”的想法字典对Python没有意义。 – Ffisegydd 2015-02-09 10:01:57
从你的代码中,除非你传入字符串'“result_dict”'',否则函数无法神奇地知道你认为你的字典被称为'result_dict'。 – khelwood 2015-02-09 10:03:28
当我调用函数我写result_dict作为第一个参数。但它会打印出result_dict的内容而不是'result_dict' – 2015-02-09 10:04:17