2009-12-07 179 views
1

我是一个python noob,我正在尝试编写一个程序,向用户显示一个名为大于X次(用户X输入)的电话号码列表。我已经有程序成功读取重复项并对它们进行计数(数字存储在{phoneNumber:numberOfTimesCalled})字典中,但我需要将用户输入(一个整数)与字典中的值进行比较,然后打印称为X或更多次的电话号码。这是我的代码至今:将用户输入整数与字典值进行比较? (Python)

import fileinput 

dupNumberCount = {} 
phoneNumLog = list() 

for line in fileinput.input(['PhoneLog.csv']): 
    phoneNumLog.append(line.split(',')[1]) 

userInput3 = input("Numbers called greater than X times: ") 
for i in phoneNumLog: 
    if i not in dupNumberCount: 
     dupNumberCount[i] = 0 
    dupNumberCount[i] += 1 

print(dupNumberCount.values()) 


userInput = input("So you can view program in command line when program is finished") 

基本上,我无法弄清楚如何在字典中的值转换为整数,比较用户输入整数该值,并打印出对应的电话号码字典值。任何帮助非常感谢!

顺便说一句,我的字典里有大约10,000项:值被组织这样的:

'6627793661': 1, '6724734762': 1, '1908262401': 1, '7510957407': 1 

希望我已经给了足够的信息,大家帮我出与该程序!

回答

0

我认为这是你在找什么:

for a in dupNumberCount.keys(): 
    if dupNumberCount[a]>=userInput: 
    print a 
0

另一种解决方案,可以帮助你在学习巨蟒:

import fileinput 

dupNumberCount = {} 

# Create dictionary while reading file 
for line in fileinput.input(['PhoneLog.csv']): 
    phoneNum = line.split(',')[1] 
    try: 
     dupNumberCount[phoneNum] += 1 
    except KeyError: 
     dupNumberCount[phoneNum] = 1 

userInput3 = input("Numbers called greater than X times: ") 

# iteritems method give you a tuple (key,value) for every item in dictionary 
for phoneNum, count in dupNumberCount.iteritems(): 
    if count >= userInput3: 
    print "Phone %s has been called %d" % (phoneNum, count) 

还有一件事,你并不需要转换计数值为整数,因为它已经是一个整数。无论如何,如果你需要转换一个字面整数(例如'2345'),那么内建函数int('2345')。另外还有float(),它可以像float('12.345')那样从文字中获得浮点数。尝试一下你的自我。

相关问题