专栏名称: dwzb
目录
相关文章推荐
中国证券报  ·  深夜,黄金大跌 ·  昨天  
FM1029柳州综合广播  ·  《老师来了》| ... ·  昨天  
国泰君安证券研究  ·  国君研究|近期深度报告 · 25年3月刊 ·  昨天  
中国证券报  ·  读书点亮生活,开卷有益人生 ·  昨天  
中国证券报  ·  董事长、总经理落选!300326,换届选举结果出炉 ·  3 天前  
51好读  ›  专栏  ›  dwzb

玩转python字典与列表(上)

dwzb  · 掘金  ·  · 2018-05-27 09:06

正文

玩转python字典与列表(上)

本文首发于 知乎

我们来看下面6组数据

d = {'name' : ['a', 'b', 'c'],
    'num' : [1, 2, 3]}
lt = [('a', 1), ('b', 2), ('c', 3)]
ld = [{'name': 'a', 'num': 1}, 
      {'name': 'b', 'num': 2},
      {'name': 'c', 'num': 3}]

ld1 = [{'a': 1}, {'b': 2}, {'c': 3}]
ls = [{'a', 1}, {'b', 2}, {'c', 3}]
d1 = {'a': 1, 'b': 2, 'c': 3}

考虑一下他们都表示什么,他们之间的关系是什么,有没有发蒙?

下面我们就好好理一下这些基础的数据类型

1.从data.frame的角度考虑

从data.frame的角度考虑,前面三个的内在含义是一样的,它们都可以直接调用pandas库中的 DataFrame 函数构造一个数据框,如下所示

>>> d = {'name' : ['a', 'b', 'c'],
...     'num' : [1, 2, 3]}
>>> lt = [('a', 1), ('b', 2), ('c', 3)]
>>> ld = [{'name': 'a', 'num': 1},
...       {'name': 'b', 'num': 2},
...       {'name': 'c', 'num': 3}]
>>>
>>> import pandas as pd
>>> pd.DataFrame(d)
  name  num
0    a    1
1    b    2
2    c    3
>>> pd.DataFrame(lt, columns=('name', 'num'))
  name  num
0    a    1
1    b    2
2    c    3
>>> pd.DataFrame(ld)
  name  num
0    a    1
1    b    2
2    c    3

d 是按照列拆分, lt 是按照行拆分, ld 也是按行拆分,只是每次都带有索引项。

我们用爬虫抓取到的数据最常见的是 ld 的形式,如下图所示

(改进 json)

ld 向其他两种类型转化的代码如下所示

>>> ld
[{'name': 'a', 'num': 1}, {'name': 'b', 'num': 2}, {'name': 'c', 'num': 3}]
>>> [tuple(i.values()) for i in ld]
[('a', 1), ('b', 2), ('c', 3)]
>>> {'name': [d['name'






请到「今天看啥」查看全文