用户控制的Python循环迭代

时间:2015-05-21 20:36:31

标签: python for-loop dictionary user-input

我是Python的新手,我已经搜索了许多地方,以便克服我遇到的问题。

首先,一些背景以便尽可能清楚。我创建了一个(体面大小)CAN数据消息字典。 CAN消息ID用作密钥,而每个消息在列表中与其对应的时间戳配对。结果是一个字典,格式如下(但更大):

d = {'1011C0BB': [[30.1429, '0FFF0000']],
    '00132058': [[30.1942, '00'], [30.2512, '00'], [40.5021, '00]]

......等等。要点是字典有一堆密钥,所有密钥都有数据列表,这些列表的长度可变。

我试图想象这些位是如何随时间变化的,这样我就可以尝试对它们的含义进行逆向工程(或者至少是它们的分组)。我已使用以下代码逐位逐点绘制数据:

colors = list(product(np.arange(0.00,1.00,0.20),repeat=3))
rgb = 0

for i in range(0,len(rawdata_dct.keys())):
    plt.hold(True)
    plt.figure(i)
    plt.title(rawdata_dct.keys()[i])
    for j in range(0,len(rawdata_dct.values()[i])):
        timedata = []
        timedata.append(rawdata_dct.values()[i][j][0])
        for k in range(0,len(rawdata_dct.values()[i][j][1])):
            bitdata = []
            bitdata.append(int(rawdata_dct.values()[i][j][1][k],16))
            for m in range(0,len(bitdata)):
                plt.plot(timedata, bitdata[m], marker='o', 
                        color=[colors[rgb][0],colors[rgb][1],colors[rgb][2]],
                        label=rawdata_dct.keys()[i])
            del bitdata
        del timedata
    rgb += 1

这可能不是最干净或最恐怖的方式,但它可以工作,它根据CAN ID对数据进行颜色编码(原始意图是生成一个包含所有数据的图形,但这不是一种看待它的有效方式)

我的主要问题是它产生了大量的图形(或者一个图形上有大量丰富多彩的数据,并有一些细微的变化)。我希望找到一种方法来控制用户输入的最外层循环的迭代。最终目标是脚本填充第一个图形,然后在填充下一个图形之前等待用户输入(例如,按“空格”)。我怎么能实现这个目标?

0 个答案:

没有答案