
# 伪数据。从 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 PRO 字典粗暴合并如果存在两个字典有一样的 key 会丢数据吧,除非合并后同 key 的 value 合并成列表之类的。那这样还是两层。 |
6 sudoy 2020-10-22 15:47:59 +08:00 ``` >>> 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 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 nbsp; 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 |