2009-12-07 3 views
1

Я python noob, и я пытаюсь написать программу, которая покажет пользователю список телефонных номеров, называемых более X раз (вход X от пользователей). У меня есть программа для успешного чтения в дубликатах и ​​подсчета их (числа хранятся в словаре, где {номер телефона: 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") 

В принципе, я не могу понять, как преобразовать словарные значения целых чисел, сравнение пользовательского ввода целого числа к этому значению, и распечатать номер телефона, который соответствует значение словаря. Любая помощь ВЕЛИКОЕ оценили!

Кстати, мой словарь имеет около 10000 ключей: значения, которые организованы как это:

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

Еще одна вещь, вам не нужно преобразовать количество значение integer, потому что оно уже целое. В любом случае, если вам нужно преобразовать буквальное целое число (например, «2345»), существует встроенная функция int ('2345'). Также есть float(), который полезен для получения float из литерала как float ('12 .345 '). Попробуйте это для себя.

Смежные вопросы