格式化字典条目

时间:2016-11-04 20:17:11

标签: python python-2.7 dictionary

我正在用PS在PS上运行python 2.7。我想用枚举的每一对打印字典的键和值。

我执行以下操作:

scraper = LiteScraper()
scraper.start(<url/page1>) #images 1, 2, 3, & 4 are created
scraper.start(<url/page2>) #images 5, 6, 7, etc.

反过来给出: my_dict = {'key_one': 1, 'key_two': 2, 'key_three': 3} for k, v in enumerate(my_dict.iteritems(), start = 1): print k, v

如何在没有大括号的情况下返回条目?

示例 - 我想在我的键值对之间加上一个=符号。

6 个答案:

答案 0 :(得分:3)

如果你想保留标记(来自枚举),那么你将不得不从dict项目分离中解压缩密钥和值。现在你所谓的k实际上是一个索引,而你所谓的v实际上是一个键值对。尝试这样的事情:

for i, (k, v) in enumerate(my_dict.iteritems(), start=1):
    print i, k, v

结果如下:

1 key_two 2
2 key_one 1
3 key_three 3

要使用等号格式化它们,您必须将print语句更改为print i, "{}={}".format(k, v),这将导致类似以下内容:

1 key_two=2
2 key_one=1
3 key_three=3

如果您需要按照一致的顺序检索密钥,请使用sorted(),如下所示:

for i, (k, v) in enumerate(sorted(my_dict.iteritems()), start=1):
    ...

或者,如果您想先按值排序而不是先按键排序,则可以为key调用指定sorted()函数。这看起来像是:sorted(my_dict.iteritems(), key=lambda (x, y): (y, x))。那会给你输出

1 key_one=1
2 key_two=2
3 key_three=3

答案 1 :(得分:1)

如果您只想在字典中打印现有的键和值,则不需要enumerate。只需使用format()

for k, v in my_dict.items():
    print '{} = {}'.format(k, v)

这会给:

key_one = 1
key_two = 2
key_three = 3

答案 2 :(得分:0)

这有效

my_dict = {'key_one': 1, 'key_two': 2, 'key_three': 3}
for key,value in my_dict.iteritems():
    print key,value

答案 3 :(得分:0)

喜欢这个吗?

>>> for k, v in my_dict.iteritems():
...      print k, v
... 
key_two 2
key_one 1
key_three 3

>>> for i, (k, v) in enumerate(my_dict.iteritems(), start=1):
...     print i, k, v
... 
1 key_two 2
2 key_one 1
3 key_three 3

答案 4 :(得分:0)

此处您不需要enumerate()。当您需要迭代以及索引时使用它。你甚至不需要str.format()来实现这个目标。只需在'='key之间添加value字符串条目即可获得您的愿望。例如:

>>> my_dict = {'key_one': 1, 'key_two': 2, 'key_three': 3}
>>> for key, value in my_dict.items():
...     print key, '=', value
... 
key_two = 2
key_one = 1
key_three = 3

修改:根据user3030010's answer

上的评论

注意:python中的dict是未订购的。如果您想维护订单,请改用collections.OrderedDict()。它将保留独立于平台和python版本的顺序。例如,如果您创建了dict之类的:

>>> from collections import OrderedDict
>>> my_dict = OrderedDict()
>>> my_dict['key_one'] = 1
>>> my_dict['key_two'] = 2
>>> my_dict['key_three'] = 3

在迭代它时,您将始终得到与以下相同的响应:

>>> for key, value in my_dict.items():
...     print key, '=', value
... 
key_one = 1
key_two = 2
key_three = 3

答案 5 :(得分:0)

简单的单行解决方案(适用于Python 2.7):

print '\n'.join([k+'='+ str(my_dict[k]) for k in my_dict.keys()])

输出:

key_two=2                                                                                                                                                                                                                                              
key_one=1                                                                                                                                                                                                                                              
key_three=3