2013-10-15 32 views
0

我正在做项目欧拉的Problem 8,我接下来要做的是创建一个密钥从1 - 1000和值是从数字每个int的字典。创建一个字典使用数字作为键和整数存储在Python中的列表中的值?

我已经尝试过各种方法,包括尝试使用范围从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 

回答

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

这是你的意思吗?

+0

接近我想要什么,键是正确的,但我希望这些值来自包含1000个整数位。所以基本上我想要的密钥从1到1000,其中密钥1的数值为[0],密钥2的数值为数字[1]等等...... –

+0

就是这样,但它并不缺少明确的换行符,我用read()而txt文件是所有1000个数字中的一个长行,所以没有换行符。您的解决方案在我的原始代码上工作为“d = {i:数字为i,数字为枚举(d)}”。再次感谢,我忘记了完全列举。 –

+0

@PadraicCunningham很高兴为你工作。 – KobeJohn

1

究竟是什么问题?你有什么错误吗?

如果您在列表理解中看到错误,则可能需要从'd'中删除新行字符。

更新(基于kobejohn的答案,你的回应):

d = {i: digits[int(i)] for i in range(15)} 
+0

我的列表理解很好,我将文本文件放入一长串数字中,以避免分割或混乱字符串。 –

+0

如果您在创建理解时没有任何问题,那么您应该能够循环(通过理解或标准循环),并从索引和数字数组中的值创建词典。我假设在你的问题中你的'=='实际上应该是'='。 – eharik

+0

是的,那是一个错字。纠正。 –

相关问题