Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用数字作为键和python列表中存储的INT的值来创建dict?_Python_Python 2.7_Dictionary - Fatal编程技术网

使用数字作为键和python列表中存储的INT的值来创建dict?

使用数字作为键和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

我正在进行Euler项目,接下来我要做的是创建一个dict,其中键从1到1000,值从数字到整数

我尝试过各种方法,包括尝试使用范围1-1001来创建键和嵌套for循环迭代数字,然后尝试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
*编辑

我明白了。您的文本文件是从问题中复制的数字块。这应该行得通。正如其他人提到的,我想你可能只是错过了清除新线

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)}