Python中从函数返回的字典不可访问的问题

2024-04-20 12:08:52 发布

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

看起来很简单,但我认为对象超出了范围! 我有一个构造字典的函数-

     def fill_dictionary(d_list,n_pat):
     my_dict = {}
     my_text = []
     my_list = []
     f_list = []
     tmp_list = []
     for word in d_list:
            if not(re.search(r'\#',word)) and not (re.search(r'ecl_attribute_def\   ecl_job_attr_def\[\]',word)):
                  tmp_list.append(word)
                  my_text = ''.join(tmp_list)
                  l = []
                  l = my_text.split(";")
                  for x in l:
                      my_list =[item.strip() for item in x.split("|")]
                      my_dict = {my_list[0]:my_list[1:]}

       return my_dict

从主函数调用-

attr_d = {}
for line in tmplf:
     skipped_blocks_ecl_tmpl.append(line)
     attr_d = fill_dictionary(skipped_blocks_ecl,new_pattern)

但是现在我想用这个字典(attr\u d)替换文件中的值。你知道吗

for line in skipped_blocks_ecl:
    for i, j in attr_d.iteritems():
         print i, "=" ,j
         if line == attr_d[i]:

但是属性在这里似乎没有任何价值,有人能帮忙吗?你知道吗


Tags: textinfor字典mydeflinetmp
1条回答
网友
1楼 · 发布于 2024-04-20 12:08:52

首先,在每次迭代中,您都会用这一行覆盖整个字典

 my_dict = {my_list[0]:my_list[1:]}

我不能说我喜欢它,但至少你的代码应该改成

def fill_dictionary(d_list,n_pat):
    my_dict = {}
    for x in l:
         my_list =[item.strip() for item in x.split("|")]
         my_dict[my_list[0]] = my_list[1:]

    return my_dict

编辑:

OP演示:

>>> l = ['Are|you', 'absolutely|sure']
>>> print fill_dictionary(None, None)
{'Are': ['you']}
{'absolutely': ['sure']}
{'absolutely': ['sure']}
>>> 

如您所见,您的字典是从它处理的最后一个字符串填充的。这很可能不是你想要的。 还有一点-你没有在函数中使用你的函数参数-我只是用None来补充它们,函数就起作用了。你要么扔掉它们要么使用它们。你知道吗

相关问题 更多 >