如果我只列出卷但是当尝试按卷大小排序时,此代码有效,我会收到错误“TypeError:'ec2.Volume'对象不支持索引”。评论部分是我用来对卷进行排序的部分。我希望按id然后大小排序。谢谢
from operator import itemgetter
import boto3
import sys
ec2 = boto3.resource('ec2')
vol_array = ec2.volumes.all()
#for v in sorted(vol_array, key=itemgetter(0)):
for v in vol_array:
a = v.id
b = v.state
c = v.size
print('{} {} {}'.format(a, b, c))
答案 0 :(得分:1)
该错误意味着您尝试在不支持它的对象上使用obj[0]
。例如:
>>> class A(object):
pass
>>> a = A()
>>> a[0]
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
A()[0]
TypeError: 'A' object does not support indexing
>>>
特别是在您的代码中,因为您使用的itemgetter(0)
转换为不支持的v[0]
。
您应该编写一个正确的函数,在不使用[0]
的情况下返回要排序的键。例如:
def my_sort_key(v):
return v.id, v.size
for v in sorted(vol_array, key=my_sort_key):
print(v.id)
答案 1 :(得分:0)
您需要使用ripe = require('stripe')(PLATFORM_SECRET_KEY);
stripe.transfers.create(
{
amount: 1000,
currency: 'usd',
destination: {CONNECTED_STRIPE_ACCOUNT_ID},
source_transaction: {CHARGE_ID}
}
);
代替attrgetter('id')
。
itemgetter(0)