我正在Project Euler上做Problem 8,我接下来要做的是创建一个带有1到1000个键的dict,并且每个数字都是数字。
我尝试了各种方法,包括尝试使用1-1001的范围创建密钥并嵌套循环迭代数字,然后尝试intDict [k] = j其中k是范围循环中的数字,j来自数字循环,但似乎无法正确。 怎么能实现这一目标? 感谢。
到目前为止我的代码:
def lrgProdOf5Numbers():
intDict = {}
highest = 0
f= open("1000dig.txt","r")
d = f.read()
f.close()
digits = [int(e) for e in str(d) ] #convert each number in string to int
答案 0 :(得分:1)
*修改
我明白了。您的文本文件是从问题中复制的数字块。这应该工作。正如其他人提到的那样,我想你可能只是错过了清除换行符。
with open('1000dig.txt', 'r') as f:
num_string = ''.join((line.strip() for line in f.readlines()))
d = {i: digit for i, digit in enumerate(num_string)}
这是你的意思吗?
答案 1 :(得分:1)
究竟是什么问题?你有任何错误吗?
如果您在列表理解中发现错误,则可能需要从“d”中删除换行符。
更新(根据kobejohn的回答和您的回复):
d = {i: digits[int(i)] for i in range(15)}