我陷入了一个奇怪的问题中

我正在从下面的json创建列表

    op = {'specific' : {
            'run' : {
               'name': 'jon',
               'location':'NY'
      }
    }
  }

以下是我的代码

 lst = []
 jsn = op['specific']
 for task in jsn:
     for attrs in jsn[task]:
         lst.append[ [[task, attrs], jsn[task][attrs]] ]
 return lst

现在,当我将该列表传递到另一个位置进行处理时,在处理之前,它的访问方式如下所示

("[[['run','name'],'jon'],"
"[[['run','location'],'NY'],")

我有点被困住了是怎么回事?想不出任何办法来解决这件事.如果有人想知道它被送到哪里进一步处理,也就是说,一个操作员在气流中输出给另一个操作员,但我在操作员1中看到了正确的输出,但当我只访问第二操作员时,它变成了上面的格式(在处理之前)

有没有人能建议,可以try 用什么方法来解决或调试这个问题?

以上提到的,请核对

推荐答案

修复代码中的一些拼写错误,如下所示:

op = {
    'specific' : {
        'run' : {
           'name': 'jon',
           'location':'NY'
        }
    }
}

def work(op):
    lst = []
    jsn = op['specific']
    for task, task_values in jsn.items():
        for attrs, attr_values in task_values.items():
            lst.append([[task, attrs], attr_values])
    return lst

print(work(op))

您得到的输出类似于:

[
    [
        ['run', 'name'],
        'jon'
    ],
    [
        ['run', 'location'],
        'NY'
    ]
]

我假设在您的第二个进程获得这个结果时,它已经被转换为一个字符串:

"[[['run', 'name'], 'jon'], [['run', 'location'], 'NY']]"

你要做的就是把这个字符串放回一个列表列表中.

要做到这一点,我将使用ast包,特别是ast.literal_eval()

import ast
l_o_l = ast.literal_eval("[[['run', 'name'], 'jon'], [['run', 'location'], 'NY']]")
print(l_o_l)

这应该会让你恢复到原来的结果.

Python相关问答推荐

如何列出Python脚本中使用的所有包?

使用SKLearn KMeans和外部生成的相关矩阵

在pandas DataFrame上运行apply()时如何访问DateTime索引?

如何从同一类的多个元素中抓取数据?

在Python中是否可以输入使用任意大小参数列表的第一个元素的函数

将嵌套列表的字典转换为数据框中的行

如何从格式为note:{neighbor:weight}的字典中构建networkx图?

由于瓶颈,Python代码执行太慢-寻求性能优化

具有多个选项的计数_匹配

Vectorize多个头寸的止盈/止盈回溯测试pythonpandas

如何使用它?

为什么以这种方式调用pd.ExcelWriter会创建无效的文件格式或扩展名?

Stacked bar chart from billrame

如何根据一列的值有条件地 Select 前N组?

有没有一种ONE—LINER的方法给一个框架的每一行一个由整数和字符串组成的唯一id?

mypy无法推断类型参数.List和Iterable的区别

如何在FastAPI中为我上传的json文件提供索引ID?

为什么\b在这个正则表达式中不解释为反斜杠

旋转多边形而不改变内部空间关系

LocaleError:模块keras._' tf_keras. keras没有属性__internal_'''