簡體   English   中英

訪問元組字典中所有元素的相同值

[英]Accessing same value for all elements in dictionary of tuples

我有一個字典,其中包含所有以 7 元組作為值的鍵。 對於每個 7 元組,7 個值中的每一個都代表與該鍵所代表的數據集相對應的不同屬性。 例如,每個元組的第一個元素是該數據集原始數據的數組,第二個值是數據的平均值,第三個值是該平均值的誤差,第四個值是該數據集的溫度被采取等。我想繪制這些值的各種不同組合,例如,平均值與溫度。

所以我需要找到一種方法將字典值轉換為包含所有相同屬性值的不同列表,即所有平均值的列表和所有溫度的列表。 我知道字典本質上是無序的,這使問題復雜化,因為列表中的每個值都需要與其在另一個列表中的對應值具有相同的索引。

dictionary={}
for i in range(len(imagefolders)):
   dictionary[slugify(imagefolders[i])]=images2(r{}\*.png".format(imagefolders[i]))

plotting=dictionary.values()

上面的代碼顯示了我如何將鍵和值輸入到字典中。 我知道 dictioanry.values() 返回字典中所有值的列表,但是當我嘗試上面的代碼時,它甚至沒有將其存儲為變量。

我現在在想,也許使用字典來存儲這些數據並不是最好的選擇,所以如果有人有更好的想法,那么請說出來,但使用字典的方法將是理想的選擇。

我對 python 相當缺乏經驗,所以將不勝感激任何貢獻。

我建議你看看pandas 它專為數據分析而設計,具有大量超級有用的功能。 它可能有一些曲線,但是這里有很多關於 stackoverflow 的文檔。

為了向您展示一些功能,我創建了一個類似於您描述的模擬字典。 我正在使用一個非常簡單的元組來幫助演示元素的位置以備后用

columns = ['data', 'mean', 'error', 'temperature', 'other1', 'other2', 'other3']
d = {}
for i in ['one', 'two', 'three', 'four', 'five']:
    d[i] = (1, 2, 3, 4, 5, 6, 7)

print(d)
# {
#   'one':   (1, 2, 3, 4, 5, 6, 7),
#   'two':   (1, 2, 3, 4, 5, 6, 7),
#   'three': (1, 2, 3, 4, 5, 6, 7),
#   'four':  (1, 2, 3, 4, 5, 6, 7),
#   'five':  (1, 2, 3, 4, 5, 6, 7)
# }

如果上面的結構與您的 dict 結構匹配,那么我們的狀態很好。 要將其全部放入一張巨大的桌子中,您只需要以下幾行即可讓所有魔法變得觸手可及。

import pandas as pd
df = pd.DataFrame.from_dict(d, orient='index', columns=columns)
print(df)
#        data  mean  error  temperature  other1  other2  other3
# three     1     2      3            4       5       6       7
# one       1     2      3            4       5       6       7
# five      1     2      3            4       5       6       7
# two       1     2      3            4       5       6       7
# four      1     2      3            4       5       6       7

要訪問給定的字段,您可以根據列對其進行索引,然后根據需要對其進行統計。

print(df['data'])
# one      1
# three    1
# four     1
# two      1
# five     1
# Name: data, dtype: int64

print(df['data'].mean())
# 1.0

Pandas 還通過df.plot()函數內置了對matplotlib支持。

暫無
暫無

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

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