擅长:python、mysql、java
<p>这里有一个紧凑的方法来做这些事情。
首先声明行项目的类:</p>
<pre><code>fields = "dow", "open_time", "close _time", "code", "foo", "subject", "bar"
Item = namedtuple('Item', " ".join(fields))
</code></pre>
<p>下一部分在你的循环中。</p>
<pre><code># this is what your raw data looks like after the split:
#raw_data = ['Monday', '8:00', '10:00', 'ETR_28135', 'lh1n1522', 'Computer science', '1']
data_tuple = Item(**dict(zip(fields, raw_data)))
</code></pre>
<p>现在慢慢地:</p>
<ul>
<li><code>zip(fields, raw_data)</code>创建成对的列表,如<code>[("dow", "Monday"), ("open_time", "8:00"),..]</code></li>
<li>然后<code>dict()</code>把它变成字典,就像<code>{"dow": "Monday", "open_time": "8:00", ..}</code></li>
<li>然后<code>**</code>将此字典解释为<code>Item</code>构造函数的一组关键字参数,相当于<code>Item(dow="Monday", open_time="8:00",..)</code>。</li>
</ul>
<p>所以你的项被命名为元组,所有的值都是字符串。</p>
<p><strong>编辑:</strong></p>
<p>如果字段的顺序不会更改,则可以更轻松地执行此操作:</p>
<pre><code>data_tuple = Item(*raw_data)
</code></pre>
<p>这使用了文件中字段的顺序和<code>Item</code>定义中参数的顺序匹配这一事实。</p>