Сравнение целых чисел ввода пользователя со значениями словаря? (Python) - PullRequest
1 голос
/ 07 декабря 2009

Я - нуб-питон, и я пытаюсь написать программу, которая покажет пользователю список телефонных номеров, набранных более чем в X раз (X введен пользователями). У меня есть программа, которая успешно считывает дубликаты и подсчитывает их (числа хранятся в словаре, где {phoneNumber: numberOfTimesCalled}), но мне нужно сравнить вводимые пользователем значения, целое число, со значением в словаре и затем распечатайте телефонные номера, которые были вызваны X или более раз. Это мой код до сих пор:

    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

Надеюсь, я дал достаточно информации для вас, чтобы помочь мне с программой!

Ответы [ 2 ]

0 голосов
/ 07 декабря 2009

Другое решение, которое может помочь вам при изучении Python:

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 из литералов типа float ('12 .345 '). Попробуйте сами.

0 голосов
/ 07 декабря 2009

Я думаю, это то, что вы ищете:

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