组织循环的最佳方法是什么?

时间:2018-04-26 03:56:48

标签: python interactive

我有12个仪器的数据分组为3x4(每组4个仪器:N1,N2,N3,N4; C1,C2,C3,C4; S1,S2,S3,S4;)。每个工具有2组数据:H和T.数据集来自不同的Excel电子表格。

执行此互动的最佳方式是什么?使用列表创建字典,矩阵......?在Matlab中,我将创建3个矩阵,每个矩阵有4列,但我不知道如何在Python上执行此操作(刚开始使用它)。

首先,我尝试创建上述变量(N1,C3,S4 ...)并附加来自不同excel电子表格的值:

sheets = ['S_WH', 'C_WH', 'N_WH']
for i in sheets:
    path = r"\\uniwa.uwa.edu.au\userhome\students2\22371812\My Documents\Documents\FieldTechniques"
    filename = i + '.xlsx'
    sheetHeights = openpyxl.load_workbook(os.path.join(path,filename), data_only=True)
    heights = sheetHeights.get_sheet_by_name("Sheet1")

    Time=[]
    H1=[]
    H2=[]
    H3=[]
    H4=[]

    for row in range (2, heights.max_row+1):
        Time.append(heights['A' + str(row)].value)
        H1.append(heights['B' + str(row)].value)
        H2.append(heights['C' + str(row)].value)
        H3.append(heights['D' + str(row)].value)
        H4.append(heights['E' + str(row)].value)

首先,如何获取这些列表(H1,H2 ......)并附加到字典中(这是我认为它可能是最好的方式)?

其次,我必须对T值做同样的事情,所以所有的站都有H和T相关。第三个值是S,即H和T的总和。我不知道如何做到这一点。如果有人可以帮助我(甚至提供一些提示),那就太棒了。

1 个答案:

答案 0 :(得分:0)

最佳在这里有点含糊不清。 Lists有他们的优点和优点缺点,dictionariesarrays以及所有其他数据结构也是如此。

最佳结构取决于您的需求(最小内存,最短搜索时间等)。

只要没有引入主要约束,我就会采用我认为最简单的解决方案 - 包含密钥和3值列表作为其值的字典 - {instrument : [H,T,S]}

玩具示例:

N1,N2 = 'a','b'
H_N1, H_N2 = 1,2
T_N1, T_N2 = 10,20

instruments = [N1, N2]
# assuming you already have H,T saved
H = [H_N1, H_N2]
T = [T_N1, T_N2]

# create an list S, and fill it using list comprehension
S = [H[i] + T[i]  for i in range(len(T))]

# can also be done by a loop
S = []
for i in range(len(T)):
    S.append(T[i] + H[i])

# add the lists together so they would all be stored together as a dictionary value
zip1 = zip(H,T,S)
zip2 = zip(instruments, zip1)
d = dict((key,value) for (key,value) in zip2)
print d

输出= {'a': (1, 10, 11), 'b': (2, 20, 22)}