使用数字作为键和python列表中存储的INT的值来创建dict?
我正在进行Euler项目,接下来我要做的是创建一个dict,其中键从1到1000,值从数字到整数 我尝试过各种方法,包括尝试使用范围1-1001来创建键和嵌套for循环迭代数字,然后尝试intDict[k]=j,其中k是范围循环中的数字,j是数字循环中的数字,但似乎无法正确执行。 如何做到这一点? 谢谢 到目前为止,我的代码是:使用数字作为键和python列表中存储的INT的值来创建dict?,python,python-2.7,dictionary,Python,Python 2.7,Dictionary,我正在进行Euler项目,接下来我要做的是创建一个dict,其中键从1到1000,值从数字到整数 我尝试过各种方法,包括尝试使用范围1-1001来创建键和嵌套for循环迭代数字,然后尝试intDict[k]=j,其中k是范围循环中的数字,j是数字循环中的数字,但似乎无法正确执行。 如何做到这一点? 谢谢 到目前为止,我的代码是: def lrgProdOf5Numbers(): intDict = {} highest = 0 f= open("1000dig.txt","r") d = f.r
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
*编辑
我明白了。您的文本文件是从问题中复制的数字块。这应该行得通。正如其他人提到的,我想你可能只是错过了清除新线
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)}
这就是你的意思吗?到底是什么问题?你有什么错误吗 如果在列表理解中发现错误,可能需要从“d”中删除新行字符 更新(基于kobejohn的回答和您的回复):
我的列表理解很好,我将文本文件分成一长行数字,以避免拆分或弄乱字符串。如果创建理解没有任何问题,那么您应该能够循环(通过理解或标准for循环)并根据索引和数字数组中的值创建字典。我假设在你的问题中,你的“==”应该是“=”。当我得到两位数的键时,值变成两位数,即12:[3,7],当键是三位数时,值变成三位数。我想要的是每个键、值对的映射,以对应于列表“数字”中每个int的位置。i、 e数字中的前三个整数是7,3,1,因此1:[7],2:[3],3[1]等。请参阅更新,这应该有效。另外,由于您所描述的内容似乎一个列表就足够了。NP,不要忘记将提供的任何一个答案标记为解决方案(我认为kobejohn的答案更适合回答您的问题)。接近我想要的,键是正确的,但我希望值来自包含1000个整数的数字。所以基本上我想要从1到1000的键,其中键1的值是数字[0],键2的值是数字[1]等等。就是这样,但它没有缺少清晰的换行符,我使用了read(),txt文件是所有1000个数字的一个长行,所以没有换行符。您的解决方案在我的原始代码上工作,即“d={i:digit for i,digit in enumerate(d)}”。再次感谢,我完全忘了列举。
d = {i: digits[int(i)] for i in range(15)}