python字典的基本操作编程_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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值