擅长:python、mysql、java
<p>为了在@maxymoo的答案下面加下划线,动态地向Python名称空间添加名称几乎总是一个坏主意(<a href="https://en.wikipedia.org/wiki/Code_smell" rel="noreferrer">code smell</a>)。原因有很多,最突出的是:</p>
<ol>
<li><p>创建的名称可能很容易与逻辑已使用的变量冲突。</p></li>
<li><p>由于名称是动态创建的,因此通常也会使用动态技术来检索数据。</p></li>
</ol>
<p>这就是为什么在语言中包含了听写。正确的方法是:</p>
<pre><code>d = {}
for name in companies:
d[name] = pd.DataFrame()
</code></pre>
<p>现在你可以写一个dict comprehension表达式来做同样的事情,但是有些人觉得它不太可读:</p>
<pre><code>d = {name: pd.DataFrame() for name in companies}
</code></pre>
<p>一旦创建了<code>d</code>,公司<code>x</code>的<code>DataFrame</code>就可以作为<code>d[x]</code>检索,这样就可以很容易地查找特定的公司。要对所有公司进行操作,通常会使用如下循环:</p>
<pre><code>for name, df in d.items():
# operate on DataFrame 'df' for company 'name'
</code></pre>
<p>在Python 2中,您最好编写</p>
<pre><code>for name, df in d.iteritems():
</code></pre>
<p>因为这样可以避免实例化<code>(name, df)</code>元组的列表。</p>