我有一个名为df的默认字典:
defaultdict(<type 'int'>, {u'DE': 1, u'WV': 1, u'HI': 1, u'WY': 1, u'NH': 2, u'NJ': 1, u'NM': 1, u'TX': 1, u'LA': 1, u'NC': 1, u'NE': 1, u'TN': 1, u'RI': 1, u'VA': 1, u'CO': 1, u'AK': 1, u'AR': 1, u'IL': 1, u'GA': 1, u'IA': 1, u'MA': 1, u'ID': 1, u'ME': 1, u'OK': 2, u'MN': 1, u'MI': 1, u'KS': 1, u'MT': 1, u'MS': 1, u'SC': 2, u'KY': 1, u'OR': 1, u'SD': 1})
如何获取该字典的值大于1的键。
如果我[df[val] for val in df if df[val]>1]
我得到的输出为[2, 2, 2]
如果我打印[df.keys() for val in df if df[val]>1]
仍然没有获得关键值,我需要像['SC', 'OK', 'NH']
这样的值超过2的键
我该怎么办?
答案 0 :(得分:2)
从使用defaultdict()
创建的字典中读取与普通dict
相同。
获取值为&gt;的键1,你会这样做:
my_dict = defaultdict(...)
print [key for key, value in my_dict.iteritems() if value > 1]
如果您使用的是Python 3,那么它就是my_dict.items()
。
答案 1 :(得分:0)
我们可以使用列表压缩方法。
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> d['HI'] = 1
>>> d['NH'] = 2
>>> d['WY'] = 1
>>> d['OK'] = 2
>>> [i[0] for i in d.items() if i[1]>1]
['NH', 'OK']