簡體   English   中英

如何在python中的列表中訪問字典中的項目?

[英]How to access to items in dictionaries within a list in python?

我在數據框中有一列,每行都是一個列表,它是許多具有相同鍵的字典的集合。 我想從字典中的同一個鍵中獲取所有項目。

我有這個清單:

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']

使用collections defaultdict

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']}

我不想使用字典。 我找到了最簡單的方法,它使用的是數據幀。

s = pd.DataFrame(s)

-------------------------
|category  | name  | person|
-------------------------
|Public    | Music | Music |
---------------------------
|Newspaper | Andre | Indian|
----------------------------

s['category'].to_list()    =    ['Public','Music','Music','Artist','Interest']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM