我想要列出一个dict列表,但有问题,
让我说我有一个dict列表,
bits
我想要的输出是,
float
我正在使用以下功能
d = [{'val': 454,'c': {'name': 'ss'}, 'r': {'name1': 'ff'}},{'val': 'ss', 'c': {'name': 'ww'}, 'r': {'name1': 'ff'}}, {'val': 22,'c': {'name': 'dd'}, 'r': {'name1': 'aa'}}]
现在,我遇到的问题是,它只生成dict中的第一个元素
答案 0 :(得分:1)
你可能在错误的地方初始化了一些东西。看看下面的代码:
d = [{'val': 454, 'c': {'name': 'ss'}, 'r': {'name1': 'ff'}}, {'val': 55, 'c': {'name': 'ww'}, 'r': {'name1': 'ff'}}, {'val': 22, 'c': {'name': 'dd'}, 'r': {'name1': 'aa'}}]
# ^ typo here
def flatten(my_dict):
res = []
for sub in my_dict:
print(sub)
dict_ = {}
for k, v in sub.items():
if isinstance(v, dict):
for k_new, v_new in v.items():
dict_[k_new] = v_new
else:
dict_[k] = v
res.append(dict_)
return res
result = flatten(d)
print(result) # [{'name': 'ss', 'name1': 'ff', 'val': 454}, {'name': 'ww', 'name1': 'ff', 'val': 55}, {'name': 'dd', 'name1': 'aa', 'val': 22}]
答案 1 :(得分:0)
您应该flattened
将structure
初始化为与None
None
相同的类型,并在list
案例递归时传递def flatten_2(structure, key="", flattened=None):
if flattened is None:
flattened = {} if isinstance(structure, dict) else []
if type(structure) not in(dict, list):
flattened[key] = structure
elif isinstance(structure, list):
for i, item in enumerate(structure):
flattened.append(flatten(item, "%d" % i))
else:
for new_key, value in structure.items():
flatten(value, new_key, flattened)
return flattened
In [13]: flatten_2(d)
Out[13]:
[{'name': 'ss', 'name1': 'ff', 'val': 454},
{'name': 'ww', 'name1': 'ff', 'val': 'ss'},
{'name': 'dd', 'name1': 'aa', 'val': 22}]
:
// Import events module
var events = require('events');
// Event emitter
var eventEmitter = new events.EventEmitter();
var max = 1000;
var count = 0;
eventEmitter.on('event', () => {
let time = Math.trunc(Math.random() * 1000) +1;
setTimeout(() => {
var c = count;
c++;
count = c;
console.log(c);
}, time);
});
// Fire
for (let i = 0; i < max; i++) {
eventEmitter.emit('event');
}
console.log('Program Ended.');
这当然只适用于有限类型的数据。