首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字典中每打印三分之一的值

从字典中每打印三分之一的值
EN

Stack Overflow用户
提问于 2017-09-09 00:11:19
回答 3查看 1.6K关注 0票数 0

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

代码语言:javascript
复制
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'}

我试图打印每三个键从切分,也打印了伴随的价值。

所以我的愿望输出应该是这样的:

代码语言:javascript
复制
0-2 XYZ
3-5 XYZ
6-8 XYZ
9-11 XYZ
12-14 XYZ

我尝试使用以下代码:

代码语言:javascript
复制
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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-09 00:42:33

另一种解决办法可能是这样:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2017-09-09 00:35:47

你可以试试

代码语言:javascript
复制
for i in range(0, len(my_dict), 3):
    print("{}-{} {}".format(i, i+2, my_dict[i]))

但这取决于所描述的my_dict的内容!

票数 1
EN

Stack Overflow用户

发布于 2017-09-09 00:36:48

我就是这样做的。

首先,我会把这个词转换成一个列表:

代码语言:javascript
复制
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]

最后:

代码语言:javascript
复制
for value, key in output:
    print value, key
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46125997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档