Python - 试图通过for循环创建一个字典

10

我正在尝试使用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循环中,我想把计数变量作为键,并将列表中相应的项作为值。然后我会将计数加1并继续下去。此外,如果我的for循环代码有点不清晰,我很抱歉。那不是真正的代码,只是一个大致的想法。有人能帮帮我吗?谢谢。

4个回答

12
你可以使用 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

2
另一种写法是:for idx, item in enumerate(list): d[index] = item - FCo
3
另外,也可以这样写:d = { k: v for k, v in enumerate(list) }。该语句用于将列表转换为字典,并将列表中的每个元素作为字典的键,对应的索引作为字典的值。 - Alden

8

您可以使用enumerate函数:

list = [102, 232, 424]
d = {}

for a, b in enumerate(list):
    d[a] = b

或者,使用字典推导:

d = {a:b for a, b in enumerate(list)}

2
您可以在不使用 For 循环或计数器变量的情况下一行代码完成此操作:
dict(zip(range(0, len(list)), list))

不需要在范围内加0:dict(zip(range(len(list)), list)) - user16310106

1
这是一个更复杂的问题,但本质上仍然是使用for循环创建字典。我想在计算机上创建一个包含所有照片/视频的数据库——有成千上万张图片和视频,并为每个照片创建一个字典记录,使用照片/电影的名称来标识记录。这样,我就可以拥有唯一的字典记录,从中创建数据库。 实现步骤:
1)使用另一个StackOverflow答案,稍微修改后,我得到了文件列表及其修改日期(在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 '}

希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接