这个断言语句测试的数据结构是什么类型的?

时间:2018-03-12 23:42:51

标签: python list dictionary data-structures assert

我无法使用以下断言语句:

assert(data[5] == {
    'tone': ['line', 'five', 'Test', 'one', '.'],
    'ttwo': ['line', 'five', 'Test', 'two', '.'], 
    'tline': [3]
})

我的理解是它正在测试在每个列表中的位置5处索引的数据(“音调”,“ttwo”和“tline”),但是“数据”是指字典吗?但它有大括号,如果它是一个字典会产生“音调”,“ttwo”和“tline”键,而不是列表,这对我来说没有意义。

或者,data是否包含更多列表(tonettwotline)的列表,这些列表本身还包含字符串或数字列表?< / p>

我认为我的数据本身的格式正确为tonettwotline(见下文);我只是无法弄清楚如何将它们放入“数据”中以使这个断言语句有效。

tone = ['line', 'five', 'Test', 'one', '.']
ttwo = ['line', 'five', 'Test', 'two', '.']
tline = 3

我试图以我知道的方式解决这个问题(将data设置为列表/元组/字典)并且我没有运气。我看过,但我找不到类似的问题,使用相同类型的数据结构或断言语句。

3 个答案:

答案 0 :(得分:3)

如果data[5]是任何东西,那么data可能是一个列表(或其他一些序列,如元组,甚至是dict或其他映射,恰好将整数作为键 - 但在任何你可以给它一个列表,这段代码会接受它。)

同时,如果将data[5]与带有==的词典进行比较,那么它几乎可以肯定是一个词典。因此,data不仅仅是任何列表,而是一个列表,其第五个元素是一个字典。我们不知道前5个元素(或5个以上的任何元素)是什么,但由于断言没有检查它们,我们可以把任何我们想要的东西放在那里。

对于那个data[5] dict-well的成员,你几乎把它们搞定了。它们都是列表 - 两个字符串列表和一个整数列表 - 但请注意您编写了tline = 3。一个int的列表与该int的值不同;你需要清单。

所以,让我们从里到外构建它:

tone = ['line', 'five', 'Test', 'one', '.']
ttwo = ['line', 'five', 'Test', 'two', '.']
tline = [3]
data5 = {'tone': tone, 'ttwo': ttwo, 'tline': tline}
data = [data5 for _ in range(6)]

现在,它会过去。

答案 1 :(得分:1)

你的理解有点不对劲。此 import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap import numpy as np # Draw map with cyl projection m = Basemap(projection='cyl', llcrnrlon=-140, llcrnrlat=20, urcrnrlon=-70, urcrnrlat=70, resolution='l') m.drawcountries(linewidth=1.8) m.drawstates(linewidth=1.2) m.drawcoastlines(1.8) m.drawmapboundary(fill_color='#99ffff') m.fillcontinents(color='#cc9966', lake_color='#99ffff', alpha=0.5) ax = plt.gca() # Plot line from lat/lon: (36, -113) to (40, -100) ax.plot([-113, -100], [36, 40], linewidth=4) # Use imshow() extent = [-113, -100, 36, 40] imag = [[1, 2], [3, 4]] im = ax.imshow(imag, extent=extent, cmap='hot_r') plt.show() 检查assert的第6个元素是否为具有这些值的目录。传递此语句的数据分配可能如下所示:

data

现在断言通过了。

答案 2 :(得分:1)

echo '<div class="row">'; echo '<form style="text-align:center" method="post" action="">'; echo '<div class="column">'; echo '<p> <h3>Original language?<h3><br> <select name="formLanguageStart"> <option value="">Select one</option> <option value="it">Italian</option> <option value="en">English</option> <option value="zh">Chinese</option> </select> </p>'; echo '</div>'; echo '<div class="column">'; echo '<p> <h3>Destination language?<h3><br> <select name="formLanguagDest"> <option value="">Select one</option> <option value="it">Italian</option> <option value="en">English</option> <option value="zh">Chinese</option> </select> </p>'; echo '</div>'; echo ' <input type="submit" value="Load translation table"/></form>'; echo '</div>'; 是包含密钥data[5]"tone""ttwo"的字典。与每个键关联的值是一个列表。

"tline"本身可以是列表或字典 - 或任何其他接受整数键的数据结构(data并未明确指出data[5]必须是任何特定类型) - 但它可能是一个列表。

你可以写一个data来通过测试:

data