Python 如何迭代字典中的一系列键?
如何迭代字典中的一系列键 例如,如果我有以下词典:Python 如何迭代字典中的一系列键?,python,dictionary,Python,Dictionary,如何迭代字典中的一系列键 例如,如果我有以下词典: {'Domain Source': 'Analyst', 'Recommend Suppress': 'N', 'Standard Error': '0.25', 'Element ID': '1.A.1.d.1', 'N': '8', 'Scale ID': 'IM', 'Not Relevant': 'n/a', 'Element Name': 'Memorization', 'Lower CI Bound': '2.26', 'Date'
{'Domain Source': 'Analyst', 'Recommend Suppress': 'N', 'Standard Error': '0.25', 'Element ID': '1.A.1.d.1', 'N': '8', 'Scale ID': 'IM', 'Not Relevant': 'n/a', 'Element Name': 'Memorization', 'Lower CI Bound': '2.26', 'Date': '06/2006', 'Data Value': '2.75', 'Upper CI Bound': '3.24', 'O*NET-SOC Code': '11-1011.00'}
在标准错误之后,如何仅迭代键?理想情况下,我希望得到标准误差下的所有值
谢谢
只是为了回应这个评论:我知道iteritems(),但是当我尝试订阅时,返回了一个错误:notsubscriptable。而且,每次键/值的顺序都是相同的。这里的问题是Python字典是无序的,因此在
'Standard Error'
之后迭代键是没有意义的。Python字典中的键没有任何特定的顺序
您将希望使用一个
例如:
>>> d = OrderedDict([('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')])
现在保证按顺序返回钥匙:
>>> d.keys()
['key1', 'key2', 'key3']
如果要获取特定值之后的所有关键点,可以使用:
问题是,字典是无序的。一旦你做到了,你就无法依赖物品的顺序。所以,如果您想要一般的解决方案,您可以使用 如果字典中已有数据,则可以明确排除前两个键:
>>> d = {'Domain Source': 'Analyst', 'Recommend Suppress': 'N', 'Standard Error': '0.25', 'Element ID': '1.A.1.d.1', 'N': '8', 'Scale ID': 'IM', 'Not Relevant': 'n/a', 'Element Name': 'Memorization', 'Lower CI Bound': '2.26', 'Date': '06/2006', 'Data Value': '2.75', 'Upper CI Bound': '3.24', 'O*NET-SOC Code': '11-1011.00'}
>>> [x for x in d if x not in ('Domain Source', 'Recommend Suppress')]
['N', 'Scale ID', 'Not Relevant', 'Element Name', 'Data Value', 'Standard Error', 'Element ID', 'Lower CI Bound', 'Date', 'Upper CI Bound', 'O*NET-SOC Code']
字典存储键/值对的顺序与添加键/值对的顺序不同。。。除非使用了。以下是方法:
entries = [('Domain Source', 'Analyst'), ('Recommend Suppress', 'N'),
('Standard Error', '0.25'), ('Element ID', '1.A.1.d.1'),
('N', '8'), ('Scale ID', 'IM'), ('Not Relevant', 'n/a'),
('Element Name', 'Memorization'), ('Lower CI Bound', '2.26'),
('Date', '06/2006'), ('Data Value', '2.75'),
('Upper CI Bound', '3.24'), ('O*NET-SOC Code', '11-1011.00')]
from collections import OrderedDict
d = OrderedDict(entries)
d.keys()[2:]
=> ['Standard Error', 'Element ID', 'N', 'Scale ID', 'Not Relevant',
'Element Name', 'Lower CI Bound', 'Date', 'Data Value',
'Upper CI Bound', 'O*NET-SOC Code']
可以使用iterkeys()方法迭代键。ex:[key for key in mydict.iterkeys()]。@HugoCorrá只在dict中有用,它按插入顺序存储,因此请参见jterraceSorry的答案,我误解了。现在我明白了有序v的重要性。无序的字典。
entries = [('Domain Source', 'Analyst'), ('Recommend Suppress', 'N'),
('Standard Error', '0.25'), ('Element ID', '1.A.1.d.1'),
('N', '8'), ('Scale ID', 'IM'), ('Not Relevant', 'n/a'),
('Element Name', 'Memorization'), ('Lower CI Bound', '2.26'),
('Date', '06/2006'), ('Data Value', '2.75'),
('Upper CI Bound', '3.24'), ('O*NET-SOC Code', '11-1011.00')]
from collections import OrderedDict
d = OrderedDict(entries)
d.keys()[2:]
=> ['Standard Error', 'Element ID', 'N', 'Scale ID', 'Not Relevant',
'Element Name', 'Lower CI Bound', 'Date', 'Data Value',
'Upper CI Bound', 'O*NET-SOC Code']