从 python 中的字典的多个键中获取特定值的唯一名称
Getting the unique names of a specific value from several keys of a dictionary in python
我在字典上有一些资料。字典中的每个键都有多个值,其中一个称为 'state' ,可以等于乔治亚州、华盛顿州等。我想获得唯一的州。我试过这样做但是我得到一个不正确的语法错误
s = set( value for key in r value = key['state'] )
如何获取所有状态?
编辑:
我拥有的数据结构实际上是一个字典列表,所以我想获取 r[0]['state']、r[1]['state'] 等的值,然后制作一个独特的列表。
所以你有一个字典,每个键值对在 value
里面有另一个字典,其中一个 "inner" 字典的键是 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
方法,以获得所有 state
值,然后你可以循环set
:
中的值
s = set( value for value in map(lambda x:x.get('state'),r))
或者要使用 lambda
功能,您可以使用 operator.itemgetter
:
from operator import itemgetter
s = set( value for value in map(itemgetter('state'),r))
我在字典上有一些资料。字典中的每个键都有多个值,其中一个称为 'state' ,可以等于乔治亚州、华盛顿州等。我想获得唯一的州。我试过这样做但是我得到一个不正确的语法错误
s = set( value for key in r value = key['state'] )
如何获取所有状态?
编辑:
我拥有的数据结构实际上是一个字典列表,所以我想获取 r[0]['state']、r[1]['state'] 等的值,然后制作一个独特的列表。
所以你有一个字典,每个键值对在 value
里面有另一个字典,其中一个 "inner" 字典的键是 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
方法,以获得所有 state
值,然后你可以循环set
:
s = set( value for value in map(lambda x:x.get('state'),r))
或者要使用 lambda
功能,您可以使用 operator.itemgetter
:
from operator import itemgetter
s = set( value for value in map(itemgetter('state'),r))