Python 遍历字典的问题
我必须编写一个程序,按最后一位数字对随机列表进行排序,并将它们放入字典中,最后一位数字作为键。之后,我必须编写一个程序来打印键值对的长度,这样对于axample我就可以得到输出 0### 2 # 3 # 4 ### 5 # 八,#Python 遍历字典的问题,python,dictionary,Python,Dictionary,我必须编写一个程序,按最后一位数字对随机列表进行排序,并将它们放入字典中,最后一位数字作为键。之后,我必须编写一个程序来打印键值对的长度,这样对于axample我就可以得到输出 0### 2 # 3 # 4 ### 5 # 八,# 但是,我在0#####时被卡住了,我看不出我做错了什么,以及为什么其他输出没有出现!请帮助,欢迎对我的代码发表任何其他评论!多谢各位 试试这样的方法: a_list = [45, 90, 30, 33, 34, 64, 34, 28, 72, 20] def sor
但是,我在0#####时被卡住了,我看不出我做错了什么,以及为什么其他输出没有出现!请帮助,欢迎对我的代码发表任何其他评论!多谢各位 试试这样的方法:
a_list = [45, 90, 30, 33, 34, 64, 34, 28, 72, 20]
def sort_by_digit(a_list):
list_0 = []
list_1 = []
list_2 = []
list_3 = []
list_4 = []
list_5 = []
list_6 = []
list_7 = []
list_8 = []
list_9 = []
digit_dic = dict()
x = 0
for i in a_list:
val = a_list[x] % 10
x +=1
if val == 0:
list_0.append(i)
elif val == 1:
list_1.append(i)
elif val == 2:
list_2.append(i)
elif val == 3:
list_3.append(i)
elif val == 4:
list_4.append(i)
elif val == 5:
list_5.append(i)
elif val == 6:
list_6.append(i)
elif val ==7:
list_7.append(i)
elif val == 8:
list_8.append(i)
elif val == 9:
list_9.append(i)
if len(list_0) != 0:
digit_dic[0] = list_0
if len(list_1) != 0:
digit_dic[1] = list_1
if len(list_2) != 0:
digit_dic[2] = list_2
if len(list_3) != 0:
digit_dic[3] = list_3
if len(list_4) != 0:
digit_dic[4] = list_4
if len(list_5) != 0:
digit_dic[5] = list_5
if len(list_6) != 0:
digit_dic[6] = list_6
if len(list_7) != 0:
digit_dic[7] = list_7
if len(list_8) != 0:
digit_dic[8] = list_8
if len(list_9) != 0:
digit_dic[9] = list_9
print digit_dic
return digit_dic
def chart(dictionary):
x = 0
for i in a_list:
if x not in dictionary:
x += 1
else:
number_of_hashes = len(dictionary[x])
print x, number_of_hashes * '#'
x += 1
chart(sort_by_digit(a_list))
我可以这样试试吗
#!/usr/local/cpython-3.4/bin/python
import pprint
import collections
def main():
a_list = [45, 90, 30, 33, 34, 64, 34, 28, 72, 20]
dict_ = collections.defaultdict(list)
for element in a_list:
val = element % 10
dict_[val].append(element)
pprint.pprint(dict_)
main()
输出:
#!/usr/bin/python
dic = dict()
lis = [45, 90, 30, 33, 34, 64, 34, 28, 72, 20]
for dig in lis:
key = str(dig)[1]
dic.setdefault(key, [])
dic[key].append(dig)
for k in sorted(dic.keys()):
print k, '#'*len(dic[k]),
谢谢你的回答!我运行了它,它工作得很好,但是我很难理解到底发生了什么?你能详细说明一下吗?提前谢谢你!然而,我仍然坚持与我的输出问题!defaultdict(list)或多或少是一个常规字典,只是它有空列表的默认值。它使用list()在内部获取一个空列表。或者你还有其他问题吗?
0 ### 2 # 3 # 4 ### 5 # 8 #