Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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 为什么我的字典插入会把变量分成两个数字而不是一个?_Python_Dictionary - Fatal编程技术网

Python 为什么我的字典插入会把变量分成两个数字而不是一个?

Python 为什么我的字典插入会把变量分成两个数字而不是一个?,python,dictionary,Python,Dictionary,我不熟悉Python和堆栈溢出,所以请原谅我在语法、语法、结构等方面犯的任何错误 我必须制作一个程序,读取文本文件并提取每封电子邮件发送的时间。这些时间应该被储存在一本字典里,在那里我还可以追踪时间发送的大多数电子邮件。我仅限于使用某些函数,因为这是用于coursera练习 我几乎完成了,但我陷入了一个非常奇怪的错误,我似乎无法理解。在将我的时间插入字典时,它会将数字拆分为两个数字,并分别跟踪它们,因此不需要获得此输出: {'04' : 3, '11' : 6, '10' : 2} 我得到:

我不熟悉Python和堆栈溢出,所以请原谅我在语法、语法、结构等方面犯的任何错误

我必须制作一个程序,读取文本文件并提取每封电子邮件发送的时间。这些时间应该被储存在一本字典里,在那里我还可以追踪时间发送的大多数电子邮件。我仅限于使用某些函数,因为这是用于coursera练习

我几乎完成了,但我陷入了一个非常奇怪的错误,我似乎无法理解。在将我的时间插入字典时,它会将数字拆分为两个数字,并分别跟踪它们,因此不需要获得此输出:

{'04' : 3, '11' : 6, '10' : 2}
我得到:

{'0' : 5, '1' : 14 , '4' : 3}
我将代码从第一个for循环中取出,并给出结果,而不是给出:

{'16' : 1}
它给了我:

{'1' : 1, '6' : 1}
name=input(“输入文件:”)
如果len(name)<1:name=“mbox short.txt”
句柄=打开(名称)
dic=dict()
对于线输入句柄:
如果line.startswith('From'):
words=line.split()
时间=字[5]。拆分(“:”)
打印(时间[0])
对于时间[0]中的单词:
dic[word]=dic.get(word,0)+1
打印(dic)

时间[0]
是单个字符串,而不是字符串列表,因此在其中循环将导致在字符之间循环。这就是我的数字被“拆分”为两个字符的原因。

在询问依赖于数据的代码时,重要的是在您的问题中包含最少的数据示例。有时,您可能想为问题创建假数据,只要它忠实地表示实际数据。。您越容易让我们从您的问题中复制和粘贴(以便我们可以执行您的代码并测试我们的解决方案),您就越有可能得到回复。-请阅读。虽然您尚未发布输入数据,但很明显,
time[0]
将是一个字符串,而不是字符串列表,因此当您循环它时,您正在循环该字符串中的字符。当您在代码中的不同位置打印内容时,是否有明显的地方出错?意外的结果?如果您现在正在使用IDE,那么现在正是学习其调试功能的好时机,例如设置断点和检查值。或者你可以花一点时间熟悉内置的。另外,在程序的关键点打印内容可以帮助您跟踪正在发生或不正在发生的事情。@alani哦,我明白了,所以在列表中指定某个索引将有点失去列表的一部分?我不确定我的回答是否有意义,但在去掉
时间[0]
后,我发现它没有拆分变量up@wwii谢谢你的建议。我可以看到,由于战略印刷,我的第二个for循环肯定是我的问题所在。
name = input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)
dic = dict()

for line in handle:
        if line.startswith('From '):
            words = line.split()
            
            time = words[5].split(':')
            
            print(time[0])
            
            for word in time[0]:
                dic[word] = dic.get(word, 0 ) + 1
 

print(dic)