如何从Python中的默认字典中获取键值?

如何从Python中的默认字典中获取键值?,python,dictionary,dictionary-comprehension,Python,Dictionary,Dictionary Comprehension,我有一个名为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'

我有一个名为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})
目前,u'WY:1,u'WY:1,u''WY:1,u'WY:1,u'NH:2,u'NJ:2,u'NJ:1,u'NN9:1,u''NM:1,u'NU:1,u'u'u'D:1,u'代码:1,u'N:1,u'NJ:1,u'N:1,u'N:1,u'N:1,u'N:1,u'N:1,u'NM1,u'N1,u'NU:1,u:1,u'NU:1,u'NU:1,u'N1,u:1,u'NU:1,u:1,u'NX:1:1,u'NX:1:1,u:1,u'NX:1,u:1,u:1,u:1,u'NX:1,u'u':2,u'KY':1,u'OR':1,u'SD':1}) 如何获取此字典中值大于1的键

如果我在df[val]>1的情况下对df中的val执行
[df[val]

我得到的输出是
[2,2,2]

如果我在df中为val打印
[df.keys(),如果df[val]>1]
我仍然没有得到键值,我需要值超过2的键,就像这样
['SC','OK','NH']

如何做到这一点???

从使用
defaultdict()创建的词典中读取与正常的
dict
相同

要获取值大于1的键,请执行以下操作:

my_dict = defaultdict(...)
print [key for key, value in my_dict.iteritems() if value > 1]

如果您使用的是Python3,那么它就是my_dict.items()

我们可以使用列表压缩方法

>>> 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']

[df中val的val…]
?但将其称为
,更为清晰;这就是您在默认情况下迭代的内容:
[key for key for key in df if df[key]>1]
。或者,
[key for key,val在df.items()中,如果val>1]
@jornsharpe如果我调用.key,我会得到一个属性错误我从来没有建议过
.key
@jornsharpe[str(val)for val在df中,如果df[val]>1]这很有效,非常感谢!!!如果df[val]>1,[str(val)表示df中的val]这要简单得多。我还找到了一个默认dict.Counter()和countStates的替代方法。最常见的是如果你要走这条路的话,如果df[key]>1],那么df中的key至少应该是
[str(key)for key in df,考虑到你要迭代的是键,而不是值。