我有一個dict這樣的:
seriesdict={'series':[],'id':[]}
其中
series= 系列名稱和
id= 與 calibre 中的圖書關聯的唯一 ID
這dict為每個系列附加到串列中
sorted_data=[]
由于此串列將用于從 Internet 請求資料,因此我想減少我必須執行的請求數量,以確保安全時間和減少網站上的流量。我想每個系列只檢查一次,然后繼續下一個。
我已經根據系列對串列進行了排序,但是我正在努力檢查如何檢查系列是否已經在串列中,如果是,如何將以下 id 添加到第一個添加的系列中。
這是我迄今為止嘗試過的:
for entry in seriesdict:
if entry['series'] not in sortedseriesdict['series']:
sortedseriesdict['series']=entry['series']
sortedseriesdict['ids']=entry['id']
sorted_data.append(sortedseriesdict.copy())
elif entry['series'] in sortedseriesdict['series']:
sortedseriesdict['ids']=entry['id']
sorted_data.append(sortedseriesdict.copy())
這個迭代問題看起來很相似,但我不確定它是否對我有幫助,因為添加的 id 還必須保留所有舊資料。
這是串列的一部分:
[{'index': 237, 'series': '5 Centimeters per Second', 'id': '13050'}
{'index': 303, 'series': '86 EIGHTY-SIX', 'id': '9809'},
{'index': 304, 'series': '86 EIGHTY-SIX', 'id': '13540'},
{'index': 305, 'series': '86 EIGHTY-SIX', 'id': '9289'},
{'index': 306, 'series': '86 EIGHTY-SIX', 'id': '13323'},
{'index': 307, 'series': '86 EIGHTY-SIX', 'id': '10783'},
{'index': 309, 'series': '86 EIGHTY-SIX', 'id': '12084'},
{'index': 310, 'series': '86 EIGHTY-SIX', 'id': '10943'},
{'index': 311, 'series': '86 EIGHTY-SIX', 'id': '9202'},
{'index': 2329, 'series': 'A Certain Magical Index', 'id': '12843'}]
我想創建seriesdict這樣 sorted_data 看起來像這樣:
[{'series': '5 Centimeters per Second', 'ids': '9809'},
{'series': '86 EIGHTY-SIX', 'ids': '13540, 9289, 13323, 10783, 12084, 10943, 9202'},
{'series': 'A Certain Magical Index', 'ids': '12843'},
...
]
如果可能的話,我該怎么做?
任何答案表示贊賞。
uj5u.com熱心網友回復:
由于您似乎正在處理系列資料,因此我建議您使用pandaslibrary。這將為您節省很多麻煩和修補,并將pandas首先提出解決方案。首先,我們將獲取您的seriesdict并將其轉換為pandas.DataFrame物件。
import pandas as pd
series_dict = [
{"index": 237, "series": "5 Centimeters per Second", "id": "13050"},
{"index": 303, "series": "86 EIGHTY-SIX", "id": "9809"},
{"index": 304, "series": "86 EIGHTY-SIX", "id": "13540"},
{"index": 305, "series": "86 EIGHTY-SIX", "id": "9289"},
{"index": 306, "series": "86 EIGHTY-SIX", "id": "13323"},
{"index": 307, "series": "86 EIGHTY-SIX", "id": "10783"},
{"index": 309, "series": "86 EIGHTY-SIX", "id": "12084"},
{"index": 310, "series": "86 EIGHTY-SIX", "id": "10943"},
{"index": 311, "series": "86 EIGHTY-SIX", "id": "9202"},
{"index": 2329, "series": "A Certain Magical Index", "id": "12843"},
]
df = pd.DataFrame(series_dict)
現在df包含我們需要的所有資料,我們可以根據您的意愿開始修改資料。為此,我們將對資料進行分組series并獲取id結果的列,并應用一個將列值與 連接起來的函式,。通過重置索引,我們可以實作結果資料幀的正確結構。
df = df.groupby("series")["id"].apply(", ".join).reset_index()
現在,如果我們使用以下命令列印結果:
print(df)
我們得到
series id
0 5 Centimeters per Second 13050
1 86 EIGHTY-SIX 9809, 13540, 9289, 13323, 10783, 12084, 10943,...
2 A Certain Magical Index 12843
如果你真的想在你建議的結構中擁有資料,
my_data = [value for _, value in df.to_dict(orient="index").items()]
會回來
[{'series': '5 Centimeters per Second', 'id': '13050'}, {'series': '86 EIGHTY-SIX', 'id': '9809, 13540, 9289, 13323, 10783, 12084, 10943, 9202'}, {'series': 'A Certain Magical Index', 'id': '12843'}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/495562.html
標籤:python-3.x 列表 字典
