2009-12-07 2 views
1

Je suis un python noob et j'essaye d'écrire un programme qui montrera à un utilisateur une liste de numéros de téléphone appelés plus de X fois (entrée X par les utilisateurs). J'ai le programme pour lire avec succès dans les doublons et les compter (les numéros sont stockés dans un dictionnaire où {phoneNumber: numberOfTimesCalled}), mais je dois comparer l'entrée de l'utilisateur, un entier, avec la valeur dans le dictionnaire et puis imprimez les numéros de téléphone qui ont été appelés X ou plusieurs fois. Ceci est mon code jusqu'ici:Comparer des entiers d'entrée utilisateur à des valeurs de dictionnaire? (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") 

Fondamentalement, je ne peux pas comprendre comment convertir les valeurs du dictionnaire en entiers, comparer le nombre entier d'entrée utilisateur à cette valeur et imprimer le numéro de téléphone correspondant au valeur du dictionnaire. Toute aide grandement appréciée!

Par ailleurs, mon dictionnaire a environ 10 000 clés: les valeurs qui sont organisés comme ceci:

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

Je espère avoir donné assez d'informations pour vous tous me aider avec le programme!

Répondre

0

Je pense que c'est ce que vous cherchez:

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

Une autre solution, peut vous aider tout en apprenant 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) 

une chose, vous n'avez pas besoin de convertir le nombre value to integer parce que c'est déjà un entier. Quoi qu'il en soit, si vous avez besoin de convertir un nombre entier littéral (par exemple '2345') il y a la fonction intégrée int ('2345'). Il y a aussi float() qui est utile pour obtenir float de littéral comme float ('12.345 '). Essayez-le pour vous-même.

Questions connexes