Python 嵌套字典获取内部值
我想知道当你在字典中有一个字典时,如何根据“两个”键获取值。 i、 e:Python 嵌套字典获取内部值,python,Python,我想知道当你在字典中有一个字典时,如何根据“两个”键获取值。 i、 e: 如何找到瑞克住的地方?(房屋及街道) 什么是最快的方式让所有的斯特雷塔人 如何找到瑞克住的地方?(房屋及街道) 您可以使用列表: [(hs,st) for st, j in street_dict.items() for hs in j if 'Rick' in set(house_dict[hs])] # [('HouseB1', 'streetB')] def find_person(name): f
- 如何找到瑞克住的地方?(房屋及街道)
- 什么是最快的方式让所有的斯特雷塔人
- 如何找到瑞克住的地方?(房屋及街道)
[(hs,st) for st, j in street_dict.items() for hs in j if 'Rick' in set(house_dict[hs])]
# [('HouseB1', 'streetB')]
def find_person(name):
for house, persons in house_dict.items():
if name in persons:
for street, houses in street_dict.items():
if house in houses:
print("{} lives at {} {}".format(name, house, street))
- 什么是最快的方式让所有的斯特雷塔人
from itertools import chain
list(chain.from_iterable([house_dict[house] for house in street_dict["streetA"]]))
# ['Jack', 'Jones', 'Joel', 'Paul', 'Lucas', 'Martin']
找到瑞克。不使用列表理解:
[(hs,st) for st, j in street_dict.items() for hs in j if 'Rick' in set(house_dict[hs])]
# [('HouseB1', 'streetB')]
def find_person(name):
for house, persons in house_dict.items():
if name in persons:
for street, houses in street_dict.items():
if house in houses:
print("{} lives at {} {}".format(name, house, street))
让所有人在一条街上:
def get_persons(street):
persons = []
for house in street_dict.get(street, []):
persons.extend(house_dict.get(house, []))
return persons
您可以将数据重建到更合适的字典中
hs = {house:street for street,houses in street_dict.items() for house in houses}
s = {person: {'street':hs[house], 'house':house} for house, persons in house_dict.items() for person in persons}
# {'Jack': {'street': 'streetA', 'house': 'HouseA1'}, 'Jones': {'street': 'streetA', 'house': 'HouseA1'},..
那么您的查询将被删除
# where lives Jordan
print(s['Jordan'])
# all persons of StreetA
print([person for person, address in s.items() if address['street'] == 'streetA'])
做dict{person:[street,house}]}你会得到任何信息,而不会加入任何内容。如果我做对了,你会建议用这两个词做一个dict,对吗?你能发布这样做的代码吗?我认为你的“}”有一点语法错误。是的-两次:)你能给我一个简短的解释一下ur“j”代表什么,以及为什么
set(house_dict[hs])]
中的set
是必需的吗?j
对应于dict的值,即内部列表,因此,“for hs in j”将检索LST中的所有值。第二点值得注意的是,集合
在检查CRoNiC成员资格方面比列表更有效