我正在尝试使用for循环创建一个字典。我有一个有序列表,我试图将列表中的值与有序数字相匹配。例如: {0:100, 1:423, 2:434}
我在制作for循环时遇到了麻烦。
list = [102, 232, 424]
count = 0
d = {} #Empty dictionary to add values into
for i in list:
#dictionary key = count
#key.append(i)
count+=1
因此在for循环中我基本上想要将count变量作为键,并将列表中的相应项作为值。然后我会添加一个来计算,然后继续。如果我的代码在for循环中有点不清楚,我很抱歉。这不是实际的代码,但只是我想要的一般概念。谁能帮我?谢谢。
答案 0 :(得分:4)
您可以通过dictionary[key] = item
在字典中设置项目,因此在您的情况下,您可以这样做:
list = [102, 232, 424]
count = 0
d = {} #Empty dictionary to add values into
for i in list:
d[count] = i
count+=1
答案 1 :(得分:3)
您可以使用枚举:
list = [102, 232, 424]
d = {}
for a, b in enumerate(list):
d[a] = b
或者,使用字典理解:
d = {a:b for a, b in enumerate(list)}
答案 2 :(得分:0)
您可以在一行中执行此操作,而无需使用For循环或Counter变量:
dict(zip(range(0, len(list)), list))
答案 3 :(得分:0)
这是问题的一个更复杂的版本,但它实际上仍在创建带有for循环的字典。我想为我的计算机上的所有照片/录像创建一个数据库-其中有1000幅,并为每张照片创建字典记录,并使用照片/电影的名称来识别记录。这样,我将拥有用于创建数据库的唯一词典记录
要实现这一目标的步骤。
1)使用另一个StackOverflow answer但稍加修改,我得到了文件列表及其修改日期(在Windows上,该日期更好地反映了文件的拍摄日期,而不是创建日期,即创建日期) Windows计算机):
from stat import S_ISREG, ST_MTIME, ST_MODE
import os, sys, time
destdir="C:/Pictures/jiphone/jiPhone-2017"
# get all entries in the directory w/ stats
entries = (os.path.join(destdir, fn) for fn in os.listdir(destdir))
entries = ((os.stat(path), path) for path in entries)
# leave only regular files, insert creation date
entries = ((stat[ST_MTIME], path)
for stat, path in entries if S_ISREG(stat[ST_MODE]))
2)然后我创建了字典
dict_J_iphone_2017=dict()
3)然后在For循环中,我从文件名中创建了recFile(文件记录),删除了句号(但是您可以从循环中的任何内容中获取它)
for cdate, path in sorted(entries):
fullDate=time.ctime(cdate)
basePath=os.path.basename(path)
recFile=basePath.replace(".","")
etc
4)然后,我为每张照片/电影创建字典条目
dict_J_iphone_2017[recFile]={'name': recName, 'date': recDate, 'time':recTime, 'day': recDay,'tags': [], 'folder': recFolder, 'comment': recComment, 'rating': 0}
我可以通过输入文件的实际名称来引用字典中的每个项目。
print(dict_J_iphone_2017['JiP6_1291PNG']
#{'date': '5-Mar-2017', 'folder': 'C:/Pictures/jiphone/jiPhone-2017', 'tags': [], 'comment': 'PNG', 'name': 'JiP6_1291.PNG', 'time': '16:19:19', 'rating': 0, 'day': 'Sun '}
希望有帮助。