【问题标题】:How to access to items in dictionaries within a list in python?如何访问python列表中字典中的项目?
【发布时间】:2019-05-15 01:03:55
【问题描述】:

我在数据框中有一列,每一行都是一个列表,它是许多具有相同键的字典的集合。我想从字典中的同一个键中获取所有项目。

我有这个清单:

s = [{'category': 'Public',
      'name': 'Newspaper',
      'person': 'A'},

     {'category': 'Music',
      'name': 'Andre',
      'person': 'B'},

     {'category': 'Music',
      'name': 'Indian',
      'person': 'A'},

     {'category': 'Artist',
      'name': 'Rihe',
      'person': 'D'},

     {'category': 'Interest',
      'name': 'Sport',
      'person': 'B'}]

我尝试过使用循环和 itemgetter,但由于数据量大,这需要很长时间。我正在寻找一种更有效的方法。

from operator import itemgetter 
   category = []
   name_page = []
   getter_category = itemgetter('category')
   getter_name = itemgetter('name')     
   for element  in s:        
      name_page.append(getter_name(element))
      category.append(getter_category(element))

我想要更高效的东西,比如:

s['category'] = ['Public','Music','Music','Artist','Interest']
s['name'] = ['Newspaper','Andre','Indian','Rihe','Sport']
s['person'] = ['A','B','A','D','B']

【问题讨论】:

    标签: python python-3.x python-2.7


    【解决方案1】:

    使用来自collectionsdefaultdict

    from collections import defaultdict
    o = defaultdict(list)
    for ss in s:
        for k, v in ss.items():
            o[k] += [v]
    
    print(dict(o))
    Out[7]:
    {'category': ['Public', 'Music', 'Music', 'Artist', 'Interest'],
     'name': ['Newspaper', 'Andre', 'Indian', 'Rihe', 'Sport'],
     'person': ['A', 'B', 'A', 'D', 'B']}
    

    【讨论】:

      【解决方案2】:

      我不想使用字典。我找到了最简单的方法,它使用数据框。

      s = pd.DataFrame(s)
      
      -------------------------
      |category  | name  | person|
      -------------------------
      |Public    | Music | Music |
      ---------------------------
      |Newspaper | Andre | Indian|
      ----------------------------
      
      s['category'].to_list()    =    ['Public','Music','Music','Artist','Interest']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-04
        • 1970-01-01
        • 1970-01-01
        • 2012-05-09
        • 1970-01-01
        • 2021-07-11
        相关资源
        最近更新 更多