我正在将neo4j批量迁移到sql。我想拥有以下数据结构:
data = [{r.__dict__['_keys']: r.__dict__['_values']} for r in result]
我有以下代码行来解析neo4j查询的结果:
[{(key1_1, key1_2): (value1_1, value1_2)}, {(key2_1, key2_2): (value2_1, value2_2)}, etc]
但是,这会将数据返回为:
ViewCompat
如果可能的话,如何在一个漂亮的衬里中纠缠数据?
答案 0 :(得分:2)
您需要压缩密钥和值,并将其传递给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'}]
属性就足够了。
演示:
var http = require('http');
var fs = require('fs');
function getFullPath(file){
return new Promise(function(resolve, reject){
fs.realpath(file, function(err, path){
resolve(path);
});
});
}
function getFileSize(file){
return new Promise(function(resolve, reject){
fs.stat(file, function(err, stats){
resolve(stats.size);
});
});
}
function calculateSize(files){
var size = 0;
var files_count = files.length-1;
return new Promise(function(resolve, reject){
files.forEach(function(file, i){
getFullPath(file).then(getFileSize).then(function(tempSize){
size += tempSize;
console.log(file, tempSize);
if(files_count == i){
resolve(size);
}
});
});
});
}
function getFiles(path){
console.warn('Staring path:',path);
return new Promise(function(resolve, reject){
fs.readdir(path, function(err, files){
if(err || !files){
reject(err);
} else {
resolve(files);
}
});
});
}
getFiles('/home/galio/DEV/js-sandbox').then(function(result){
return calculateSize(result);
}, function(err){
console.log('ERROR:', err);
}).then(function(size){
console.log('All files size is: ', size);
});
答案 1 :(得分:1)
由于您的示例未提及任何明确的输入,因此很难确定这是否有效。但我认为这应该有效:
data = [dict(zip(r.__dict__['_keys'], r.__dict__['_values'])) for r in result]
这将解压缩每个子条款中的键和值。