python常用字典操作范例详解编程语言

# experimenting with the Python dictionary 
# a seemingly unordered set of key:value pairs, types can be mixed 
# Python23 tested     vegaseat     13feb2005 
# initialize a dictionary, here a dictionary of roman numerals 
romanD = {'I':1,'II':2,'III':3,'IV':4,'V':5,'VI':6,'VII':7,'VIII':8,'IX':9} 
print "A dictionary is an unordered set of key:value pairs:" 
print romanD 
# create an empty dictionary 
D1 = {} 
# show empty dictionary contents and length (number of item/pairs) 
print "Empty Dictionary contains:" 
# shows  {} 
print D1 
# shows Length = 0 
print "Length = ", len(D1) 
# add/load new key:value pairs by using indexing and assignment 
# here 'eins' is the key, 'one' is the key value 
# the start of a german to english dictionary 
D1['null'] = 'zero' 
D1['eins'] = 'one' 
D1['zwei'] = 'two' 
D1['drei'] = 'three' 
D1['vier'] = 'four' 
# print loaded dictionary and length 
# the dictionary key order allows for most efficient searching 
print "Dictionary now contains (notice the seemingly random order of pairs):" 
print D1 
print "Length = ",len(D1) 
# find the value by key (does not change dictionary) 
print "The english word for drei is ", D1['drei'] 
# better 
if 'drei' in D1: 
    print "The english word for drei is ", D1['drei'] 
# create a list of the values in the dictionary 
L1 = D1.values() 
# the list can be sorted, the dictionary itself cannot 
L1.sort() 
print "A list of values in the dictionary (sorted):" 
print L1 
# create a list of dictionary keys 
L2 = D1.keys() 
L2.sort() 
print "A list of the dictionary keys (sorted):" 
print L2 
# does the dictionary contain a certain key? 
if D1.has_key('null'): 
    print "Key 'null' found!" 
else: 
    print "Key 'null' not found!" 
# copy dictionary D1 to D2 (the order may not be the same) 
D2 = D1.copy() 
print "Dictionary D1 has been copied to D2:" 
print D2 
# delete an entry 
del D2['zwei'] 
print "Dictionary D2 after 'zwei' has been deleted:" 
print D2 
# extract the value and remove the entry 
# pop() changes the dictionary, use e3 = D2['drei'] for no change 
e3 = D2.pop('drei') 
print "Extract value for key = 'drei' and delete item from dictionary:" 
print e3 
print "Dictionary D2 after 'drei' has been popped:" 
print D2 
print 
str1 = "I still miss you baby, but my aim's gettin' better!" 
print str1 
print "Count the characters in the above string:" 
# create an empty dictionary 
charCount = {} 
for char in str1: 
    charCount[char] = charCount.get(char, 0) + 1 
print charCount 
print 
if 't' in charCount: 
    print "There are %d 't' in the string" % charCount['t'] 
print 
str2 = "It has been a rough day. I got up this morning put on a shirt and a" 
str2 = str2 + " button fell off. I picked up my briefcase and the handle came off." 
str2 = str2 + " Now I am afraid to go to the bathroom." 
print str2 
print "Count the words in the above string, all words lower case:" 
# create a list of the words 
wordList = str2.split(None) 
# create an empty dictionary 
wordCount = {} 
for word in wordList: 
    # convert to all lower case 
    word = word.lower() 
    # strip off any trailing period, if needed do other punctuations 
    if '.' in word: 
        word = word.rstrip('.') 
    # load key:value pairs by using indexing and assignment 
    wordCount[word] = wordCount.get(word, 0) + 1 
print wordCount 
print 
# put keys into list and sort 
keyList = wordCount.keys() 
keyList.sort() 
# display words and associated count in alphabetical order 
for keyword in keyList: 
    print keyword, "=", wordCount[keyword] 
# put the dictionary pairs into a list, use the romanD dictionary 
romanList = [] 
for key, value in romanD.items(): 
    # put value first for a meaningful sort 
    romanList.append((value, key)) 
romanList.sort() 
print "/nThe roman numeral dictionary put into a (value,pair) list then sorted:" 
print romanList 
print "/nList them as pairs on a line:" 
for i in xrange(len(romanList)): 
    print romanList[i][0],'=', romanList[i][1] 
print 
# split the romanD dictionary into two lists 
print "Splitting the romanD dictionary into two lists:" 
romankeyList = [] 
romanvalueList = [] 
for key, value in romanD.items(): 
    romankeyList.append(key) 
    romanvalueList.append(value) 
print "Key List:",romankeyList 
print "Value List:",romanvalueList 
print 
# make a dictionary from the two lists 
print "Combining the two lists into a dictionary:" 
romanD1 = dict(zip(romankeyList, romanvalueList)) 
print romanD1 
# to save a Python object like a dictionary to a file 
# and load it back intact you have to use the pickle module 
import pickle 
print "The original dictionary:" 
print romanD1 
file = open("roman1.dat", "w") 
pickle.dump(romanD1, file) 
file.close() 
file = open("roman1.dat", "r") 
romanD2 = pickle.load(file) 
file.close() 
print "Dictionary after pickle.dump() and pickle.load():" 
print romanD2 
print 
# let's get rid of some duplicate words 
str = "Senator Strom Thurmond dressed as as Tarzan" 
print "/nOriginal string:" 
print str 
print "A list of the words in the string:" 
wrdList1 = str.split() 
print wrdList1 
def uniqueList(anyList): 
    """given a list, returns a unique list with the order retained""" 
    # create an empty dictionary 
    dic1 = {} 
    # use a list comprehension statement and the unique feature of a dictionary 
    return [dic1.setdefault(e,e) for e in anyList if e not in dic1] 
# a call to the above function will retain the order of words 
wrdList2 = uniqueList(wrdList1) 
print "Convert unique list back to string (order retained):" 
print " ".join(wrdList2)

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/8187.html

(0)
上一篇 2021年7月18日
下一篇 2021年7月18日

相关推荐

发表回复

登录后才能评论