我在玩Python,试着理解字典。我知道之前有人问过关于这个错误的问题,但这些问题并不能帮助我理解我的问题
我有以下代码
mailSender = dict()
count = 0
name = input("Enter file:")
handle = open(name)
for line in handle:
line = line.rstrip()
if not line.startswith("From "):
continue
count = count + 1
senderNames = line.split()
# print(splitLines[1])
print(senderNames[1])
if senderNames not in mailSender:
mailSender[senderNames] = 1
else:
mailSender[senderNames] = mailSender[senderNames] + 1
# print(mailSender)
我试图找出一个文本文件的电子邮件地址,然后找到谁发送了最多的电子邮件
我不断得到以下错误:
if senderNames not in mailSender: TypeError: unhashable type: 'list'
我没有经验知道我的错误在哪里,我希望有人能给我一些启示
字典有两部分,
keys
和values
。每个key
指向一个value
,如下所示:mailSender["email@email.com"] = 5 # This means, that email@email.com appears 5 times
当您试图查找发件人的姓名时,需要在存储所有电子邮件的
keys
中搜索姓名,而不是在整个字典中搜索姓名,这是keys
到values
的映射。您还需要指出您希望在senderNames
中找到的电子邮件地址的位置,这是电子邮件列表中的一个。您可以通过将代码更改为:例如,您可以这样查找第一个电子邮件地址:
然后它将搜索
senderNames
是否在mailSender
的键中。希望这有帮助问题是您使用的是senderNames,它是一个包含From和whatnot的列表,而您可能正在查找senderNames[1],即名称。类似这样的情况-虽然您可能希望将一些发送者名称数组组合成一个字符串,但不确定您的数据究竟是什么样子
相关问题 更多 >
编程相关推荐