dict.items()和之间是否有任何适用的差异dict.iteritems()?
从Python文档:
dict.items():返回字典的(键,值)对列表的副本.
dict.iteritems():在字典(键,值)对上返回一个迭代器.
如果我运行下面的代码,每个似乎都返回对同一对象的引用.我缺少哪些微妙的差异?
#!/usr/bin/python
d={1:'one',2:'two',3:'three'}
print 'd.items():'
for k,v in d.items():
if d[k] is v: print '\tthey are the same object'
else: print '\tthey are different'
print 'd.iteritems():'
for k,v in d.iteritems():
if d[k] is v: print '\tthey are the same object'
else: print '\tthey are different'
Run Code Online (Sandbox Code Playgroud)
输出:
d.items():
they are the same object
they are the same object
they are the same object
d.iteritems():
they are the same …Run Code Online (Sandbox Code Playgroud) 通过了解字典中的值,有没有直接找到密钥的方法?
我能想到的就是:
key = [key for key, value in dict_obj.items() if value == 'value'][0]
Run Code Online (Sandbox Code Playgroud) 可能重复:
反向字典查找 - 使用Python 进行字典的Python
反向映射
如何在字典中获取索引的键?
例如:
i = {'a': 0, 'b': 1, 'c': 2}
Run Code Online (Sandbox Code Playgroud)
所以,如果我想获得i [0]的关键,它将返回'a'
我想以OrderedDict相反的顺序迭代.
即颠倒顺序:
for k, v in my_ordered_dict.iteritems():
# < do stuff >
Run Code Online (Sandbox Code Playgroud)
到目前为止,通过反转列表,我得到了一个非懒惰的版本:
for k, v in list(my_ordered_dict.iteritems())[::-1]:
# < do stuff >
Run Code Online (Sandbox Code Playgroud)
任何想法如何使它更好?