我是Python的初学者(20年后又回到编码领域…)
我正在写一个小剧本来学习不规则英语动词。 我做了一个这样的口述(法语)
verbes = {
"abide":["abode","abode","respecter / se conformer à"],
"arise":["arisen","arisen","survenir"],
}
如果我想迭代verbes,我会这样做,例如:
^{pr2}$好吧,那就行了。 然后我发现我可以导入random来获取一个随机键和值
rand = random.choice(verbes.items())
如果我打印rand,我有一个键,值 但如果我再重复一次,就会有一个回溯:
Traceback (most recent call last):
File ".\exverbe1.py", line 209, in <module>
for verb, (pret, past, trad) in rand.items(): AttributeError: 'tuple' object has no attribute 'items'
我还没上“元组”课,但我试着把它变成一个列表、一个dict等,但没有成功。我查看了stackoverflow中的“for loop tuple”,但没有结果。所以现在我想在3个小时后寻求帮助。。。 谢谢
random.choice(verbes.items())
从verbes.items()
中随机选取一个元组。rand
因此包含一个项-rand[0]
持有密钥,rand[1]
值。在如果您正在尝试遍历值列表中的项:
要将
^{pr2}$rand
元组解压为其组成部分:verb
现在包含键,pret
、past
和{rand
是来自verbes
的项目,因此无需再次调用项目:
^{pr2}$dict.items()
返回dict中“items”的列表。每个item都是(key, value)
形式的元组。random.choice
返回其中一个元组。我看到你在尝试循环rand
,也许你想要多个随机项?如果是这样的话,你可以这样做:更新
在python中,它们称为诸如
a, b = iterable
解包的asigment。您可以在右侧使用许多不同的类型,例如:在简单的情况下,数量或变量需要与iterable中的项数相同,否则python将引发错误。您可以嵌套解压缩,以便:
外部的}相同。在
()
是可选的,因此a, b = item
与{Python3引入了我从未使用过的更高级的解包类型,但是您可以阅读它们here。在
相关问题 更多 >
编程相关推荐