myFunction.js
当我对此方法const spyStore = jest.spyOn(store, "dispatch");
进行函数调用时,我在网上遇到def create(ids):
policy = {
'Statement': []
}
for i in range(0, len(ids), 200):
policy['Statement'].append({
'Principal': {
'AWS': list(map(lambda id: f"arn:aws:iam::{id}:root", ids[i:i + 200]))
}
})
return policy
错误
create({'1','2'})
。
来自Java背景,这在某种程度上与类型转换有关吗?
错误是否表示我正在将一组数据结构传递给列表函数?
如何解决?
答案 0 :(得分:1)
就像@Carcigenicate在评论中说的那样,由于集在Python中的无序性质,无法对集进行索引。相反,您可以在itertools.islice
循环中使用while
从给定集合创建的迭代器中一次获取200个项目:
from itertools import islice
def create(ids):
policy = {
'Statement': []
}
i = iter(ids)
while True:
chunk = list(islice(i, 200))
if not chunk:
break
policy['Statement'].append({
'Principal': {
'AWS': list(map(lambda id: f"arn:aws:iam::{id}:root", chunk))
}
})
return policy
答案 1 :(得分:1)
我在python中处理列表时遇到了同样的问题
在python中列表是用方括号而不是大括号定义的
错误列表{1,2,3}
右侧列表 [1,2,3]
此链接详细说明了列表 https://www.w3schools.com/python/python_lists.asp
答案 2 :(得分:0)
根据Python的官方文档,set
数据结构称为Unordered Collections of Unique Elements
,它不支持索引或切片等操作。
与其他集合一样,集合支持set中的x,len(set)和set中的x。集是无序集合,不记录元素位置或插入顺序。因此,集合不支持索引,切片或其他类似序列的行为。
当您定义temp_set = {1, 2, 3}
时,它仅意味着temp_set
包含3个元素,但是没有索引可以获取
>>> temp_set = {1,2,3}
>>> 1 in temp_set
>>> True
>>> temp_set[0]
>>> Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3326, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-10-50885e8b29cf>", line 1, in <module>
temp_set[0]
TypeError: 'set' object is not subscriptable