<h2>列表索引必须是整数而不是字符串</h2>
<p>下面是python列表的一个可视化示例:</p>
<pre class="lang-none prettyprint-override"><code>0 carrot.
1 broccoli.
2 asparagus.
3 cauliflower.
4 corn.
5 cucumber.
6 eggplant.
7 bell pepper
</code></pre>
<p><code>0</code>、<code>1</code>、<code>2</code>都是“<em><strong>指数”<br/>
<code>"carrot"</code>,<code>"broccoli"</code>等等。。。都被称为“值”</p>
<p>本质上,python <code>list</code>是一台具有整数输入和任意输出的机器</p>
<p>将python列表视为一个黑匣子:</p>
<ol>
<li>一个数字,如<code>5</code>,进入框中</李>
<li>你转动一个附在盒子上的曲柄手柄</李>
<li>也许字符串<code>"cucumber"</code>是从盒子里出来的</li>
</ol>
<p>您遇到了一个错误:<code>TypeError: list indices must be integers or slices, not str</code></p>
<p>有各种各样的解决办法</p>
<h2>将字符串转换为整数</h2>
<p>将字符串转换为整数</p>
<pre class="lang-python prettyprint-override"><code>listy_the_list = ["carrot", "broccoli", "asparagus", "cauliflower"]
string_index = "2"
integer_index = int(string_index)
element = listy_the_list[integer_index]
</code></pre>
<p>所以是的。。。。只要字符串标记看起来像数字(例如<code>"456"</code>或<code>"7"</code>),就可以使用该方法</p>
<p>整数类构造函数<code>int()</code>不是很聪明</p>
<p>例如,<code>x = int("3 ")</code>将产生一个错误</p>
<p>您可以尝试<code>x = int(strying.strip())</code>删除前导和尾随空格字符</p>
<h2>使用允许键为字符串的容器</h2>
<p>很久以前,在电子计算机出现之前,世界上有各种各样的集装箱:</p>
<ul>
<li>饼干罐</li>
<li>松饼罐</li>
<li>纸板箱</li>
<li>玻璃罐</li>
<li>钢罐</李>
<li>背包</li>
<li>行李袋</li>
<li>衣柜/衣柜</li>
<li>简案</li>
</ul>
<p>在计算机编程中,还有各种类型的“<em><strong>容器”<br/>
如果不想,您不必使用<code>list</code>作为容器</p>
<p>在一些容器中,<em><strong>键</strong></em>(也称为<em><strong>索引</strong></em>)可以是字符串,而不是整数</p>
<p>在python中,与列表类似但键/索引可以是字符串的标准容器是<code>dictionary</code></p>
<pre class="lang-python prettyprint-override"><code>thisdict = {
"make": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict["brand"] == "Ford"
</code></pre>
<p>如果要使用字符串而不是整数索引到容器中,请使用<code>dict</code>而不是<code>list</code></p>
<p>以下是python <code>dict</code>的一个示例,该python以状态名称作为输入,以状态删节作为输出:</p>
<pre class="lang-python prettyprint-override"><code>us_state_abbrev = {
'Alabama': 'AL',
'Alaska': 'AK',
'American Samoa': 'AS',
'Arizona': 'AZ',
'Arkansas': 'AR',
'California': 'CA',
'Colorado': 'CO',
'Connecticut': 'CT',
'Delaware': 'DE',
'District of Columbia': 'DC',
'Florida': 'FL',
'Georgia': 'GA',
'Guam': 'GU',
'Hawaii': 'HI',
'Idaho': 'ID',
'Illinois': 'IL',
'Indiana': 'IN',
'Iowa': 'IA',
'Kansas': 'KS',
'Kentucky': 'KY',
'Louisiana': 'LA',
'Maine': 'ME',
'Maryland': 'MD',
'Massachusetts': 'MA',
'Michigan': 'MI',
'Minnesota': 'MN',
'Mississippi': 'MS',
'Missouri': 'MO',
'Montana': 'MT',
'Nebraska': 'NE',
'Nevada': 'NV',
'New Hampshire': 'NH',
'New Jersey': 'NJ',
'New Mexico': 'NM',
'New York': 'NY',
'North Carolina': 'NC',
'North Dakota': 'ND',
'Northern Mariana Islands':'MP',
'Ohio': 'OH',
'Oklahoma': 'OK',
'Oregon': 'OR',
'Pennsylvania': 'PA',
'Puerto Rico': 'PR',
'Rhode Island': 'RI',
'South Carolina': 'SC',
'South Dakota': 'SD',
'Tennessee': 'TN',
'Texas': 'TX',
'Utah': 'UT',
'Vermont': 'VT',
'Virgin Islands': 'VI',
'Virginia': 'VA',
'Washington': 'WA',
'West Virginia': 'WV',
'Wisconsin': 'WI',
'Wyoming': 'WY'
}
</code></pre>