一行代码 - 字典推导式

2024-05-19 06:23:00 发布

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

我正在将neo4j批量迁移到sql。我希望具有以下数据结构:

[{key1_1: value1_1, key1_2: value1_2}, {key2_1: value2_1, key2_2: value2_2}, etc}]

我有以下代码行解析neo4j查询的结果:

data = [{r.__dict__['_keys']: r.__dict__['_values']} for r in result]

但是,这会将数据返回为:

[{(key1_1, key1_2): (value1_1, value1_2)}, {(key2_1, key2_2): (value2_1, value2_2)}, etc]

如果可能的话,我该如何用一行很好的语句来处理数据呢?你知道吗


Tags: 数据代码数据结构sqldataetc批量keys
2条回答

您需要压缩键和值,并将它们传递给dict()调用,不需要dict理解:

data = [dict(zip(r._keys, r._values)) for r in result]

这里,每个dict()调用都会从(key, value)对中生成一个新的字典,该字典zip()输出

我没有在这里直接访问__dict__,使用_keys_values属性就足够了。你知道吗

演示:

>>> class Record(object):
...     def __init__(self, keys, values):
...         self._keys, self._values = keys, values
...
>>> result = [Record(('key1_1', 'key1_2'), ('value1_1', 'value1_2')), Record(('key2_1', 'key2_2'), ('value2_1', 'value2_2'))]
>>> [dict(zip(r._keys, r._values)) for r in result]
[{'key1_1': 'value1_1', 'key1_2': 'value1_2'}, {'key2_1': 'value2_1', 'key2_2': 'value2_2'}]

考虑到您的示例没有提到任何显式输入,很难确定这是否有效。但我想这应该行得通:

 data = [dict(zip(r.__dict__['_keys'], r.__dict__['_values'])) for r in result]

这将解压每个子部分中的键和值。你知道吗

相关问题 更多 >

    热门问题