# 伪数据。从 excel 返回内容,字典形式,表名是 key,内容是 value 。内容里每行一个 json 。
data = read_excel(a)
excel 的内容是
[
[表 1 的各行
{1a:1,1b:2,1c:3,...},
{1a2:1,1b2:2,1c2:3,...},
...
],
[表 2 的各行],
...,
[表 N 的各行]
]
也就是一个 2 层的数组
现在想获取的是,把第二层都拼成一个数组。也就是类似
itertools.chain(**data)
或者
new = []
for sheet in data:
new += sheet
还有什么写法比较好?
1
airdge 2020-10-22 15:20:51 +08:00
sum(data.values())
|
2
EggtartZ 2020-10-22 15:32:56 +08:00
意思是要把一个列表的字典合并成一个字典?
|
3
cryingsky 2020-10-22 15:35:55 +08:00
flatten
|
4
hmdsw 2020-10-22 15:40:06 +08:00
pandas
|
5
TimePPT 2020-10-22 15:43:44 +08:00
字典粗暴合并如果存在两个字典有一样的 key 会丢数据吧,除非合并后同 key 的 value 合并成列表之类的。那这样还是两层。
|
6
sudoy 2020-10-22 15:47:59 +08:00 1
```
>>> x = {'a': 1, 'b': 2} >>> y = {'b': 3, 'c': 4} >>> z = {**x, **y} >>> z {'c': 4, 'a': 1, 'b': 3} ``` |
7
iblislsy 2020-10-22 17:18:15 +08:00 1
sum([[1,2,3],[3,4,5]],[])
这题完结 |
8
JCZ2MkKb5S8ZX9pq OP @iblislsy 原来 sum 还有第二个参数,一直没这么用过。
|
9
JCZ2MkKb5S8ZX9pq OP @iblislsy
如果不加第二个参数,会报类型错误,这个怎么理解? 我本来感觉,它是把第一个参数的 list[0] 作为初始值,然后 list[0]+list[1]+...+list[n]的。但好像一定要带上第二个 start 参数,定义一个空列表? |
10
BBCCBB 2020-10-22 18:48:41 +08:00
sum 的第二个参数默认为 0,, 不指定的话就是 0, 所以类型不匹配.
|
11
wuwukai007 2020-10-22 18:57:12 +08:00 via Android
list(chain(*youlist))
from itertools import chain |
12
kaitolucifer 2020-10-22 19:29:10 +08:00 via iPhone
The issue of quadratic performance of sum(sequences, null_seq) is known, which is why the doc says that sum() is for numbers and recommends .join for strings and itertools.chain for other sequences.
上面那个 sum trick 貌似很慢? |
13
owtotwo 2020-10-22 20:01:11 +08:00
itertools.chain.from_iterable 应该可以?
|
14
lithbitren 2020-10-22 23:18:21 +08:00
印象中测过 chain 最快,sum 次之,循环最慢
|
15
billgreen1 2020-10-23 07:25:43 +08:00
建议考虑一下 pandas
|