【发布时间】:2013-03-24 05:14:59
【问题描述】:
在 python 3.2 中,我尝试使用字典为字母表中的每个字母分配一个值。模式是'a'=1,'b'=2,'c'=3…'z'=26。我有一个名为 words.txt 的文件,在这个文件中有很长的单词列表。单词以大写字母开头,但是,我的值仅针对小写字母定义。 无论如何,我必须为每个单词分配一个与其字母值的总和相对应的值, 当单词转换为小写时。 我也知道如何找出列表中有多少单词的总值是 137 的整数倍? 我也很困惑如何让 python 引用 .txt 文件。
欢迎任何帮助!谢谢!
这是我目前的代码:
d = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6,'g':7,'h':8,'i':9,'j':10,'k':11,'l':12,'m':13,'n':14,'o':15,'p':16,'q':17,'r':18,'s':19,'t':20,'u':21,'v':21,'w':23,'x':24,'y':25,'z':26}
find = open("words.txt")
[x.lower() for x in ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]]
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
def num_multiple():
for line in find:
if line.find("word % 137 == 0") == -1:
return line
else:
word = line.strip()
print(num_multiple)
print(len(num_multiple))
【问题讨论】:
-
快速方法是
d = dict(zip(string.ascii_lowercase, range(1, 27))) -
@jamylak 这可以节省很多时间!但是,Python 告诉我“未定义名称字符串”。我应该换东西吗?谢谢!!!
-
@jamylak 这可以节省很多时间!但是,Python 告诉我“未定义名称字符串”。我应该换东西吗?谢谢!!!
-
@jamylak 再次感谢您的帮助!
-
@jamylak 你知道如何用下面的代码解决问题吗?非常感谢! Python 知道使用我的“d”吗?我在您编写的代码正上方的原始评论中复制了我发布的列表(现在已更改为单行版本),Python 不断返回
values.append(d[letter_lower ]) 我究竟做错了什么? d 应该放在别处吗?
标签: python list dictionary type-conversion python-3.2