使用python从dynamoDB获取项的唯一值

时间:2016-12-23 13:12:50

标签: python python-2.7 amazon-web-services amazon-dynamodb boto3

我是dynamoDB的新手,无法找到有关如何获取特定项的唯一值的材料。我在dynamoDB中有一个数据,如下所示:

Item_1      |  Item_2      |     Item_3
----------------------------------------
value_1_1   |  value_2_1   |    value_3_1
value_1_2   |  value_2_2   |    value_3_2
value_1_3   |  value_2_3   |    value_3_3
value_1_4   |  value_2_4   |    value_3_4

我想获得列Item_3

的所有唯一值

我的方法如下:

import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('women_kurta')
i=1
pricelist=[]
while i<50:
    data = table.get_item(Key={'id':i})#   data.save()
    pricelist+=[data['Item']['price']]
    print i
    i+=1
print list(set(pricelist))

但它非常慢且效率不高。有没有其他方法可以有效地做到这一点?

1 个答案:

答案 0 :(得分:3)

未经测试的代码。因此,必要时进行调整。

不是每次都创建一个新列表,只需附加它即可。你会看到许多数量级的速度。

pricelist.append(data['Item']['price'])

使用列表理解来进一步提高速度。这只是一个想法。尝试理解并修复任何语法。

import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('women_kurta')
pricelist = [table.get_item(Key={'id':i})['Item']['price'] for i in xrange(50)]
print list(set(pricelist))