操纵python中的直方图字典

时间:2017-10-16 00:23:33

标签: python python-3.x

例如:

 print("1.")
 draw_histogram({'a': 2, 'c': 7, 'b': 5})
 print("2.")
 draw_histogram({'a': 0, 'c': 5, 'b': 7, 'f': 0})

我试图获得一系列明星。打印的星数由与键对应的值给出。键按字母顺序打印。如果相应的值小于1,则不打印该键。我尝试了下面的功能,但它不起作用。

def draw_histogram(histogram_dict):
    dicts = list(histogram_dict.keys())
    for key in dicts:
        if histogram_dict[key] < 1:
           print (len(str(histogram_dict[key]))*"*")

预期:

 1.
 a: **
 b: *****
 c: *******
 2.
 b: *******
 c: *****

3 个答案:

答案 0 :(得分:1)

试试这个:

def draw_histogram(histogram_dict):
    dicts = list(histogram_dict.keys())
    for key in sorted(dicts):
        if histogram_dict[key] >= 1:
           print(key + ": " + histogram_dict[key] * "*")

print("1.")
draw_histogram({'a': 2, 'c': 7, 'b': 5})
print("2.")
draw_histogram({'a': 0, 'c': 5, 'b': 7, 'f': 0})

Try it online!

您正在执行< 1,只打印小于 1的值,而您想要>= 1。此外,做len(str(number)) * "*"没有意义;这给出了你想要的数字位数。最后,执行sorted()按字母顺序显示它们。

答案 1 :(得分:0)

histogram_dict[key]

首先,您不需要创建键列表 - 如果您遍历字典,则会自动迭代键。

其次,如果1大于或等于1且不小于-global _main: +global main -_main: +main: ,则需要打印。

第三,你错误地计算了星号(星号)的数量,但它们已经在你的字典中作为值。

答案 2 :(得分:0)

以下代码回答了您的问题。


def draw_histogram(histogram_dict):
    dicts = list(histogram_dict.keys())
    for key in dicts:
        if histogram_dict[key] < 1:
           print "{} - {}".format(key, int(histogram_dict[key])*"*")
        else:
           print "{} - {}".format(key, int(histogram_dict[key]) * "*")

def draw_histogram(histogram_dict):

输出:

1.
a: **
c: *******
b: *****
2
a: 
c: *****
b: *******
f: 
P.N:这个代码是在python 2.7

上开发的