我正在嘗試在 DynamoDB(亞馬遜網路服務)中使用 batch_writer()。我閱讀了第一個 CSV,將每個標題存盤在一個 Dict 中。
CSV #1 -> 我有 3 個字典(國家名稱、語言、ISO3)。Country Name 是我的 DynamoDb 表中的 PRIMARY KEY。
CSV #2 -> 我只想從 CSV 存盤 1 列,所以我只有 1 個 Dict(區域)。
當我上傳值時,它不會像對 CSV 1 中的 3 個字典那樣回圈遍歷 Area 中的每個值。
with open('shortlist_languages.csv', 'r') as file:
reader = csv.DictReader(file)
for row in reader:
country_name = {
'Country Name': row['Country Name']
}
languages = {
'Languages': row['Languages']
}
iso3 = {
'ISO3': row['ISO3']
}
with open('shortlist_area.csv', 'r') as file_area:
reader_area = csv.DictReader(file_area)
for row in reader_area:
area = {
'Area': row['Area']
}
for vals_area in area.values():
for value in country_name.values():
print(value)
for values in languages.values():
for values_iso3 in iso3.values():
with table.batch_writer(overwrite_by_pkeys=['Country Name']) as batch:
batch.put_item(
Item={
'Country Name': value,
'Languages': values,
'ISO3': values_iso3,
'Area':vals_area
}
)
我的 DynamoDB 表的螢屏截圖——如您所見,Area 沒有正確回圈。我的 CSV 中 Area 的最后一個值是重復列印。我該如何解決?

CSV#1 示例:
ISO3,Country Name,Languages
ALB,Albania,Albanian
DZA,Algeria,Arabic,Tamazight
AND,Andorra,Catalan
AGO,Angola,Portuguese
CSV #2 示例
ISO3,Country Name,Area
ALB,Albania,28748
DZA,Algeria,2381741
AND,Andorra,468
AGO,Angola,1246700
uj5u.com熱心網友回復:
您的代碼嵌套不正確。下面是一些示例代碼,首先將語言檔案讀入字典,然后遍歷區域檔案:
languages = {}
table = []
# Load languages, catering for multiple languages
with open('shortlist_languages.csv') as languages_file:
for line in languages_file:
fields = line.strip().split(',')
languages[fields[0]] = ','.join(fields[2:])
# Load countries
with open('shortlist_area.csv') as countries_file:
for line in countries_file:
fields = line.strip().split(',')
table.append(
{
'Country Name': fields[1],
'Languages': languages[fields[0]],
'ISO3': fields[0],
'Area': fields[2]
}
)
print(table)
(我懶得用CSV函式了!)
輸出是:
[
{
"Country Name": "Country Name",
"Languages": "Languages",
"ISO3": "ISO3",
"Area": "Area"
},
{
"Country Name": "Albania",
"Languages": "Albanian",
"ISO3": "ALB",
"Area": "28748"
},
{
"Country Name": "Algeria",
"Languages": "Arabic,Tamazight",
"ISO3": "DZA",
"Area": "2381741"
},
{
"Country Name": "Andorra",
"Languages": "Catalan",
"ISO3": "AND",
"Area": "468"
},
{
"Country Name": "Angola",
"Languages": "Portuguese",
"ISO3": "AGO",
"Area": "1246700"
}
]
請注意,阿爾及利亞的輸出中有多種語言。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331704.html
標籤:Python 亚马逊网络服务 文件 字典 亚马逊动态数据库
下一篇:.NET中的反思
