【发布时间】:2017-09-20 18:03:18
【问题描述】:
我需要将我拥有的字典的值转换为列表中的元组。
我的代码如下:
import io
opened_infocsv = io.StringIO('''"ID","Name","Type 1","Type 2","Generation","Legendary"
720,"HoopaHoopa, Confined","Psychic","Ghost",6,"TRUE"
1,"Bulbasaur","Grass","Poison",1,"FALSE"
681,"Aegislash, (Blade Form)","Steel","Ghost",6,"FALSE"
413,"Wormadam, Plant","Bug","Grass",4,"FALSE"
643,"Reshiram","Dragon","Fire",5,"TRUE"
678,"Meowstic, Male","Psychic","",6,"FALSE"''')
def read_info_file(filename):
idb = {} #Declares empty dict to be written to.
#opened_infocsv = open(filename, 'r') #opens an argued .csv file witH INFO format.
info_string = opened_infocsv.readlines()
#opened_infocsv.close()
for i in range(1,len(info_string)):
splitline=info_string[i].replace("\n",'').replace('"','').split(',')
for loc,i in enumerate(splitline):
if i=="":
splitline[loc]=None
if len(splitline)==7:
splitline[1]=splitline[1]+","+splitline.pop(2)
splitline[0],splitline[4]=int(splitline[0]),int(splitline[4])
if len(splitline)==6:
splitline[0],splitline[4]=int(splitline[0]),int(splitline[4])
if splitline[5] == "TRUE":
splitline[5]= True
else:
splitline[5] = False
idb[splitline.pop(1)] = splitline
print(idb)
目前,我的输出是具有这种格式的字典:
{'HoopaHoopa, Confined': [720, 'Psychic', 'Ghost', 6, True]}
我只想将要转换为元组的值列表。
我尝试了tuple(idb.values()),但它似乎不起作用。
最后,我需要能够在最后一行 ("idb[splitline.pop(1)] = splitline") 之后添加解决方案,因为我需要能够在转换列表之前弹出列表。
【问题讨论】:
-
tuple(list(idb.values())[0]) -> (720, 'Psychic', 'Ghost', 6, True)
-
什么也没做
-
假设
{'HoopaHoopa, Confined': [720, 'Psychic', 'Ghost', 6, True]}为idb,再试一次tuple(list(idb.values())[0]) -
@jyotish 你在哪里添加代码?我在 idb[splitlines.pop... 下添加了它,它没有改变任何东西。
-
print(idb) 最终需要什么,是 {'HoopaHoopa, Confined': (720, 'Psychic', 'Ghost', 6, True)} 还是只是 (720, '通灵','幽灵',6,真)。
标签: python list dictionary for-loop tuples