Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 遍历字典的问题_Python_Dictionary - Fatal编程技术网

Python 遍历字典的问题

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

我必须编写一个程序,按最后一位数字对随机列表进行排序,并将它们放入字典中,最后一位数字作为键。之后,我必须编写一个程序来打印键值对的长度,这样对于axample我就可以得到输出

0### 2 # 3 # 4 ### 5 # 八,#


但是,我在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 #