簡體   English   中英

在列表中提取字典的值

[英]Extracting values of a dictionary within a list

據我了解,我在列表中有以下字典:

[{'week': 3, 'timing': '07:30'}, {'week': 4, 'timing': '20:30'},{},....]

我想提取時間和星期並將它們放在單獨的列表中。 但是,由於外面有一個列表,因此無法識別鑰匙。 我試圖做的是以下內容:

for item in list:
    new_list =list( item.values() )[0] 

但它顯示了一個錯誤,因為我認為其中一些是空白的。 目前,我收到錯誤:IndexError: list index out of range。 我怎樣才能將它們提取到兩個單獨的列表中,並在它們空白的地方有一個 NaN?

以下代碼將有助於分別提取周和時間值

check = [{'week': 3, 'timing': '07:30'}, {'week': 4, 'timing': '20:30'}]
week_list = []
timing_list=[]
for i in check:
    for k,v in i.items():
        if k == 'week':
            week_list.append(v)
        else:
            timing_list.append(v)


Output
```[3, 4]
['07:30', '20:30']

您首先創建兩個列表並附加項目。 迭代應該在列表中的每個對象上完成,每個對象都是字典本身。 假設包含字典的列表稱為full_list ,因為將其命名為list對 python 來說不太方便。

week_list = []
timing_list = []

for i in full_list:
   week_list.append(i['week'])
   timing_list.append(i['timing'])

例如,如果有空值的字典、空字典或只有week但沒有timing字典,我喜歡使用:

import numpy as np
for i in full_list:
    try:
       week_list.append(i['week'])
    except KeyError:
       week_list.append(np.nan)
    try:
       timing_list.append(i['timing'])
    except KeyError:
        timing_list.append(np.nan)

這樣,只要鍵不存在,您就會將NaN值附加到您的列表中,如果您以后對列表執行操作,這將很有幫助。

完整示例:

full_list = [{'week': 3, 'timing': '07:30'}, {'week': 4, 'timing': '20:30'},{},{'week':4},{'timing':'09:21'},{}]
week_list = []
timing_list = []
import numpy as np
for i in full_list:
    try:
       week_list.append(i['week'])
    except KeyError:
       week_list.append(np.nan)
    try:
       timing_list.append(i['timing'])
    except KeyError:
        timing_list.append(np.nan)
print(week_list)
print(timing_list)

輸出:

[3, 4, nan, 4, nan, nan]
['07:30', '20:30', nan, nan, '09:21', nan]

編輯:

如果字典是這樣的:

full_dict = {'person_1':{'week': 3, 'timing': '07:30'},'person_2':{'week': 4, 'timing': '20:30'},'person_3':{}}

每個key都應該進行迭代。 因此循環將是:

for i in full_dict.keys():
    and exactly the same code as before

我使用此代碼分別提取它們。

weeks = [ a['week'] for a in new_list ]

timings = [ a['timing'] for a in new_list ]

暫無
暫無

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

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