从字典中打印每三个值

时间:2017-09-09 00:11:19

标签: python dictionary

我有一个看起来像这样的dict文件:

0-2 XYZ
3-5 XYZ
6-8 XYZ
9-11 XYZ
12-14 XYZ

我正在尝试打印dict中的每个第三个键,并打印随附的值。

所以我的愿望输出看起来像这样:

my_dict={0: 'XYZ', 1: 'XYZ', 2: 'XYZ', 3: 'XYZ', 4: 'XYZ', 5: 'XYZ', 6: 'XYZ', 7: 'XYZ', 8: 'XYZ', 9: 'XYZ', 10:'XYZ',11:'XYZ',12:'XYZ',13:'XYZ',14:'XYZ'}

for key, val in my_dict.iteritems():
  dash="-"
  print key,dash,value

我尝试使用以下代码:

FROM alpine:edge

是否有可能从字典中实现这一点,或者我是否需要转换为列表,欣赏任何建议。

3 个答案:

答案 0 :(得分:1)

你可以尝试

for i in range(0, len(my_dict), 3):
    print("{}-{} {}".format(i, i+2, my_dict[i]))

但它取决于my_dict实际上如所描述的内容!

答案 1 :(得分:0)

我就是这样做的。

首先我将dict转换为列表:

my_list = [(value, s) for value, s in my_dict.iteritems()]
sorted_list = sorted(my_list, key= lambda tup: tup[0])

shifted = sorted_list[2:]

# every 3rd
small_value = shorted_list[::3]
large_value = shifted[::3]

zip_values = zip(small_value, large_value)

outputs = [('{minv}-{maxv}'.format(minv=left_tup[0], maxv=right_tup[0]), right_tup[1]) for left_tup, right_tup in zip_values]

最后:

for value, key in output:
    print value, key

答案 2 :(得分:0)

另一种解决方案可能是这样的:

my_list = [(value, s) for value, s in my_dict.iteritems()]
sorted_list = sorted(my_list, key= lambda tup: tup[0])

for index, value in sorted_list[2::3]:
    out_string = '{}-{} {}'.format(index-2, index, value)

    print out_string