簡體   English   中英

操作列表列表

[英]Manipulating List of Lists

我有 3 個列表; 其中一個名稱,一個數據和一個日期,我將在下面打印一個示例(實際數據集要大得多,這是我第一次在這里詢問)

List1 = [[Ref1,Ref2,Ref3],[Ref1,Ref2,Ref3,Ref4],[Ref2,Ref3]]
List2 = [[1,2,3],[1.1,2.1,3.1,4.1],[2.2,3.2]]
List3 = [2020,2019,2021]

我設法操縱數據使列表的順序相互匹配。 我需要做的是為每個 Refx 創建圖表,其中 List 2 在 y 軸上,List 3 作為 x 軸。

我想以這種方式為每個 Refx 按日期順序單獨列出,例如:

Ref1 = [1.1,1]
Ref2 = [2.1,2,2.2]
Ref3 = [3.1,3,3.2]
Ref4 = [4.1]

dates = [2019,2020,2021]

然后我可以輕松地 plot 每個 Refx 一些建議會很棒......

以下代碼將幫助您解決問題。

Ref1, Ref2, Ref3, Ref4 = [], [], [], []
Refs = [Ref1, Ref2, Ref3, Ref4]

List1 = [[Ref1, Ref2, Ref3], [Ref1, Ref2, Ref3, Ref4], [Ref2, Ref3]]
List2 = [[1, 2, 3], [1.1, 2.1, 3.1, 4.1], [2.2, 3.2]]
List3 = [2020, 2019, 2021]

for i in range(len(List1)):
    for j in range(len(List1[i])):
        List1[i][j].append((List3[i], List2[i][j]))

for r in Refs:
    r.sort(key=lambda x: x[0])

Ref1 = [i[1] for i in Ref1]
Ref2 = [i[1] for i in Ref2]
Ref3 = [i[1] for i in Ref3]
Ref4 = [i[1] for i in Ref4]

print(Ref1)
print(Ref2)
print(Ref3)
print(Ref4)

結果:

[1.1, 1]
[2.1, 2, 2.2]
[3.1, 3, 3.2]
[4.1]

該答案會將數據重組為字典,這與您在問題中要求的內容略有不同,但也可能有幫助:

List1 = [["Ref1", "Ref2", "Ref3"], ["Ref1", "Ref2", "Ref3", "Ref4"], ["Ref2", "Ref3"]]
List2 = [[1, 2, 3], [1.1, 2.1, 3.1, 4.1], [2.2, 3.2]]
List3 = [2020, 2019, 2021]

# default dict will allow us accumulating values
from collections import defaultdict

d = defaultdict(list)

# this will iterate in the order sorted by List3 (first arg to zip)
for year, refs_keys, refs_vals in sorted(zip(List3, List1, List2)):
    # this is to iterate over the nested lists
    for ref_key, ref_val in zip(refs_keys, refs_vals):
        d[ref_key].append(ref_val)
    d["years"].append(year)

# convert to plain dict (optional)
d = dict(d)
print(d)

暫無
暫無

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

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