gpt4 book ai didi

Python - 将类型分配给字典中的值

转载 作者:行者123 更新时间:2023-12-01 05:11:45 26 4
gpt4 key购买 nike

我有一个Python将字典记录插入 MongoDB 的应用程序(通过PyMongo)。

字典记录是从 CSV 的行中读取的。文件(实际上是一个制表符分隔的文件,但差异相同)。

阅读CSV文件并将每一行插入 MongoDB ,我正在使用代码:

with open(input_file, 'r') as f_h:
reader = csv.DictReader(f_h, delimiter='\t')
records = []
for record in reader:
records.append(record)
if len(records) % 100 == 0:
db.add_record(table_name, records) #MongoDB helper method
records = []

这工作得很好,除了我的所有值都是 string 类型。 ,事实上,我有 intfloat记录中的值也是如此。我认为Python有能力确定类型,但我不确定如何在上面的代码中实现这一点。有人对此有任何想法吗?

更新:

两者sihrcJoran的答案为我指明了正确的方向。但是,我想更新完整的工作实现。我的问题包括在将字典发送到 MongoDB 之前如何更改字典中每个元素的转换。为此,我必须将他们的代码放入每个 key/value 的循环中。字典中的配对。

for key, value in dictionary.iteritems():
try:
dictionary[key] = int(value)
except: pass
try:
dictionary[key] = float(value)
except: pass

return dictionary

现在就像魅力一样。希望我能接受两个答案!

最佳答案

sihrc 几乎已经有了解决方案

def convertType(value):
if value.strip().isdigit():
return int(value)
try:
return float(value)
except:
pass
return value

您需要按此顺序执行

因为 float("1") 会很好地转换并返回一个 float(在另一个解决方案中),即使它实际上是一个 int

你可以让它更短(也许更易读)

def convertType(value):
try:
return int(value) if value.strip().isdigit() else float(value)
except:
return value # or None or float("-inf") or something depending on desired behavior

关于Python - 将类型分配给字典中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24088223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com