做python练习题遇到了几个小问题,希望得到各位的帮助

favorite_places = {
'xiaowang' : ['a1'],
'xiaoli' : ['a1','b2','c3'],
'xiaozhang' : ['c3','d4']
}
for names ,places in favorite_places.items() :

print(len(places))

##为什么xiaowang的len(places)是2?????
##是因为a1有两个字符吗?那么怎么把a1当作一个字符呢?
##通过给a1加上[],使得a1变成列表可以解决这个问题,还有别的办法吗?
if len(places) > 1 :
print(names.title() + "'s favorite places are : \n")
for place in places :

print('-' + place)
elif len(places) == 1 :
print(names.title() + "'s favorite places is : \n")
print('-' , places)
##如果是('-'+places)就会出现:
##TypeError: can only concatenate str (not "list") to str
##改成('-' , places)错误解决,还有别的解决办法吗?
##怎么能去掉输出结果['a1']的方括号呢?

问题都标记在注释中了,初学编程希望能得到各位的帮助,谢谢大家

你提的这几个问题,都是初学者容易遇到的,
请注意,尊重并且记住python的主要数据类型
字符串和list是不同的数据类型,所以它们作为len的参数时有不同的表现
它们在+运算符上也有不同的表现
在print的输出格式上也有不同的表现

类似“怎么把a1当作一个字符”这种,并不应该是python语言的“问题”
len('a1') ==> 2
len(['a1']) ==> 1

第一个问题
favorite_places = {
'xiaowang' : ['a1'],
'xiaoli' : ['a1','b2','c3'],
'xiaozhang' : ['c3','d4']
}
for names ,places in favorite_places.items():
    print len(places), names
输出为
2 xiaozhang
3 xiaoli
1 xiaowang
所以并不是按照顺序输出的,你想按照字典的顺序可以用collections.OrderedDict()类