从python中字典的多个键中获取特定值的唯一名称

从python中字典的多个键中获取特定值的唯一名称,python,dictionary,key,unique,Python,Dictionary,Key,Unique,我有一些关于字典的资料。字典中的每个键都有几个值,其中一个叫做“state”,可以等于乔治亚州、华盛顿州等。我想得到唯一的州。我试着这样做,但我得到了一个不正确的语法错误 s = set( value for key in r value = key['state'] ) 我怎样才能得到所有的州 编辑: 我拥有的数据结构实际上是一个字典列表,因此我想获得r[0]['state'],r[1]['state']等的值,并创建一个唯一的列表。因此您有一个字典,每个键值对在值中都有另一个字典,其中这些

我有一些关于字典的资料。字典中的每个键都有几个值,其中一个叫做“state”,可以等于乔治亚州、华盛顿州等。我想得到唯一的州。我试着这样做,但我得到了一个不正确的语法错误

s = set( value for key in r value = key['state'] )
我怎样才能得到所有的州

编辑:


我拥有的数据结构实际上是一个字典列表,因此我想获得r[0]['state'],r[1]['state']等的值,并创建一个唯一的列表。

因此您有一个字典,每个键值对在
中都有另一个字典,其中这些“内部”字典的一个键是
状态

在这种情况下:

my_dict = {'somekey': {'a':1,'b':2, 'state':'georgia'}, 'otherkey': {'a':1,'b':2, 'state':'washington'}}
[val['state'] for key, val in my_dict.iteritems()]
['georgia', 'washingon']

只是猜测您的数据结构,但如果是这样:

r = {'home': {'address': '123 Oak Avenue', 'city': 'My town', 'state': 'State'},
     'work': {'address': '456 Main Street', 'city': 'Big city', 'state': 'State'}}
然后,您可以使用它来检索状态:

s = set(r[key]['state'] for key in r)

根据您的评论,因为您有一个字典列表,您可以使用
map
函数将
dict.get
方法传递给它,以获取所有
状态
值,然后您可以在
集合
中循环值:

s = set( value for value in map(lambda x:x.get('state'),r))
或者要使用
lambda
函数,您可以使用
操作符。itemgetter

from operator import itemgetter
s = set( value for value in map(itemgetter('state'),r))

state
的值是否可编辑?你能为这个问题增加你的价值吗?你能发布你正在使用的词典吗?你所说的唯一状态是什么意思?它们的关键值会改变吗?或者“州”包括所有州的列表?字典有点大。也许我可以给你看一把钥匙。如果字典是r,那么如果我打印r[0]['state'],我就得到了乔治亚。我想获得每个键的状态值上显示的唯一状态列表。@Atirag
r
字典列表也是如此吗?我得到了这个错误类型错误:描述符“get”需要一个“dict”对象,但收到了一个“str”,以防万一,只需再问一个问题。有没有一种方法可以让我计算一个状态出现的次数,稍微修改一下代码?例如,阿拉巴马州被发现的次数