在 Python 3 中用字符串和数字创建一个元组

Create a tuple in Python 3 with string and number

我在 python 中有一个对象,如下所示

contributor_detail=contributorId+ ',' +contentFileName+','+productPriority
output =
CSFBW23_1194968,CSFBW23_1194968.pdf,10
CSFBW23_1194969,CSFBW23_1194968.pdf,11
CSFBW23_1194970,CSFBW23_1194968.pdf,13

如有不明之处请见谅 我将尝试在这里重新构建它,这就是我制作数组然后需要制作元组进行排序的方式。

for record in event['Records']:
        #pull the body out & json load it
        jsonmaybe=(record["body"])
        jsonmaybe=json.loads(jsonmaybe)
        jsonmaybe1=(jsonmaybe["Message"])
        jsonmaybe1=json.loads(jsonmaybe1)
        
        #now the normal stuff works
        bucket_name = jsonmaybe1["Records"][0]["s3"]["bucket"]["name"]
        print(bucket_name)
        key=jsonmaybe1["Records"][0]["s3"]["object"]["key"]
        print(key)
        
        s3_clientobj = s3.get_object(Bucket=bucket_name, Key=key)
        s3_clientdata = s3_clientobj['Body'].read().decode('utf-8')
        employee_dict = json.loads(s3_clientdata)
        contributorId=employee_dict['Research']['Product']['@productID']
        contentFileName=employee_dict['Research']['Product']['Content']['Resource']['Name']
        productPriority=employee_dict['Research']['Product']['@productPriority']
        
        print("contributorId---------------"+contributorId)
        print("contentFileName---------------"+contentFileName)
        print("productPriority---------------"+productPriority)
        
        contributor_detail=contributorId +','+contentFileName+','+productPriority
        unsorted_contributors.append(contributor_detail)

我想从中创建一个元组并向该元组添加多个对象。

Output i am getting now 
['CSFBW23_1194968,CSFBW23_1194968.pdf,6', 'CSFBW23_1194968,CSFBW23_1194968.pdf,7', 'CSFBW23_1194968,CSFBW23_1194968.pdf,9']

Expected output 
[("CSFBW23_1194968","CSFBW23_1194968.pdf",6),("CSFBW23_1194968","CSFBW23_1194968.pdf",7),("CSFBW23_1194968","CSFBW23_1194968.pdf",9)]

我需要上面的元组,以便可以根据元组中的第 3 个项目对它进行排序。

sorted_contributors.sort(key=itemgetter(2))

请帮忙在循环中创建这样的格式

如果我没理解错的话,看起来你只需要停止像使用 contributorId+ ',' +contentFileName+','+productPriority 那样制作 contributor_detail 和字符串。假设这些值是字符串和一个 int,您将它们作为字符串与 , 连接。确实不太清楚你在追求什么,但我怀疑,你想要的是:

conributor_detail = contributorId, contentFileName, productPriority

这会生成一个元组,您可以从中创建一个列表。

from operator import itemgetter

contrib1 = "CSFBW23_1194968", "CSFBW23_1194968.pdf", 10
contrib2 = "CSFBW23_1194969", "CSFBW23_1194968.pdf", 11
contrib3 = "CSFBW23_1194970", "CSFBW23_1194968.pdf", 13

contributors = [contrib1, contrib2, contrib3]
sorted_contributors = sorted(contributors, key=itemgetter(2))
print(sorted_contributors)

输出:

[('CSFBW23_1194968', 'CSFBW23_1194968.pdf', 10), ('CSFBW23_1194969', 'CSFBW23_1194968.pdf', 11), ('CSFBW23_1194970', 'CSFBW23_1194968.pdf', 13)]

对您的问题的简单说明:

# what you are doing (incorrect):

In [1]: contrib1 = "thingB"+","+"thingA"+","+"1"
In [2]: contrib2 = "thingC"+","+"thingD"+","+"2"
In [3]: print([contrib1, contrib2])
['thingB,thingA,1', 'thingC,thingD,2']

# what you really want is:

In [4]: contrib1 = "thingB", "thingA", 1
In [5]: contrib2 = "thingC", "thingD", 2
In [6]: print([contrib1, contrib2])
[('thingB', 'thingA', 1), ('thingC', 'thingD', 2)]

这将创建正确的格式

my_list = []
my_list.append(contributorId)
my_list.append(contentFileName)
my_list.append(bucket_name)
my_list.append(key)
my_list.append(int(productPriority))

unsorted_contributors.append(my_list)

串联导致格式不匹配,因此创建一个列表并追加应该有效