【问题标题】:Accessing same value for all elements in dictionary of tuples访问元组字典中所有元素的相同值
【发布时间】:2019-04-18 22:55:12
【问题描述】:

我有一个包含键的字典,所有键的值都是 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 相当缺乏经验,所以如果有任何贡献,我将不胜感激。

【问题讨论】:

    标签: python dictionary plot


    【解决方案1】:

    我建议你看看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 的支持。

    【讨论】:

    • 感谢您的建议,我会试一试,因为我认为它应该可以让我轻松解决我遇到的其他一些问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多