我正在用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
如何在没有大括号的情况下返回条目?
示例 - 我想在我的键值对之间加上一个=符号。
答案 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