我正在尝试将值存储在Python字典中
resname={}
for count, value in enumerate(files):
resname["serial"]=count
resname["url"]=value
resname["name"]=os.path.splitext(os.path.basename(value))[0].split(',')[0].split('Data')[1].strip()
resname.append(resname)
resname
但这不起作用。我只想存储字典中所有文件的完整URL以及文件名的拆分版本。但是我只能得到最终文件。
{'serial': 10,
'url': '/Users/xtx/DA/data/Data test1.csv',
'name': 'test1'}
如何存储所有文件?
答案 0 :(得分:2)
上面显示的方法不起作用,因为您只是在字典中写相同的变量和相同的键。最好创建一个字典列表。
例如
resname=[]
for count, value in enumerate(files):
temp = {}
temp["serial"]=count
temp["url"]=value
temp["name"]=os.path.splitext(os.path.basename(value))[0].split(',')[0].split('Data')[1].strip()
resname.append(temp)
将实现您的期望。
答案 1 :(得分:0)
使用上面列出的词典列表是一个很好的解决方案。
如果其中一个字段(序列,URL或名称)用作唯一标识符,则您也可以将数据存储为一个字典,并将该唯一标识符用作该字典中的键(并使用另一个子字典作为值,其键是其他字段。
例如,如果“名称”是唯一标识符,则可以:
resname={}
for count, value in enumerate(files):
name = os.path.splitext(os.path.basename(value))[0].split(',')[0].split('Data')[1].strip()
sub_dict = {'serial': count, 'url': value}
resname.update(name: sub_dict)
或者,使用dict理解:
def name_from_url(value):
return os.path.splitext(os.path.basename(value))[0].split(',')[0].split('Data')[1].strip()
resname = {name_from_url(value): {'url': value, 'serial': count} for count, value in enumerate(files)}