Python - 如何动态地将列表条目映射和附加到字典

时间:2012-07-27 04:36:19

标签: python dictionary

我今天花了很多时间与这个人搏斗 - 我正在从串口服务器设备(通过套接字模块)读取数据。数据进入正常状态,我正在尝试对其进行简单的字符串处理(确认正确的数据块大小),然后再添加时间戳并将完整的块放入字典中,并将时间戳作为键。这是代码:

for i in range(0, (len(rawData)+1)):
    if len(rawData[i]) == 57:
        ss2000_data[str(time.time())] = (rawData[i].split(', '))
        print ss2000_data
    else: continue

字典处理正常,因为我得到一个有效的密钥:值对 - 一次!循环部分不起作用,所以不管我收到多少串行数据,我只会得到一个键:值对。

我已经在这里扫描了问题,也在Python.org论坛上,并且还浏览了文档“学习Python”,“Python Pocket Ref”和python.org上的Python教程,但我没有得到任何地方。我也是Python的亲戚。我很欣赏任何有关潜在信息来源的建议或指示。 在此先感谢,非常感谢

2 个答案:

答案 0 :(得分:1)

(我假设rawData包含来自串行连接的一些行/数据报。)

time.time()无法保证提供一秒的分数。您可能处理得太快,time.time()无法提供除初始值以外的任何内容。尝试将str(i)添加到您用于存储拆分数据的密钥,或使用另一个密钥(可能来自i),保证每个循环都会更改。

答案 1 :(得分:1)

如果你只打印了一个条目,那意味着rawData中只有一个长度为57的条目,对吗?

稍微清理一下代码,并添加一些调试。保持简单,接近你所拥有的:

for block in rawData:
  print 'Block,len=%d' % (len(block),)
  if len(block) == 57:
     ss2000_data[str(time.time())] = (block.split(', '))
     print ss2000_data

如果您期望rawData中有超过1个长度为57的条目,那么您确定“数据是否正常”?