根据值列表中的一个值检索python字典键

时间:2019-08-29 09:18:22

标签: python list dictionary

我有一个居住在不同时区的人的清单。我需要确定此人所属的时区。

我创建了字典:

mydict = {'London':['bob1', 'bob2', 'bob3'],'Paris': ['bob4','bob5','bob6','bob7']}

我发现,我可以通过它的值来获取密钥

mydict.keys()[mydict.values().index('bob')] 

问题在于该值存储在列表中。有没有办法做到这一点? 也许您可以看到完全不同的解决方案?我曾考虑过创建一个表Timezone | customer1 | customer2 | customern-1,但这似乎也不是一种优雅的解决方案。

2 个答案:

答案 0 :(得分:2)

mydict = {'London':['bob1', 'bob2', 'bob3'],'Paris': ['bob4','bob5','bob6','bob7']}

person = 'bob5'

for key,item in mydict.items():
    if person in item:
        print ("Person {} is living in {}".format(person,key))

输出:

Person bob5 is living in Paris

或使用list comprehension

person = 'bob5'

city = [key for key,item in mydict.items() if person in item]
print ("Person {} is living in {}".format(person,city[0]))

输出:

Person bob5 is living in Paris

答案 1 :(得分:0)

您可以创建一个函数并使它可重用。您可以检查{em> person 并返回in,如果发现则返回

mydict = {'London':['bob1', 'bob2', 'bob3'],'Paris': ['bob4','bob5','bob6','bob7']}

def getKey(mydict,person):
    for key in mydict.keys():
        if person in mydict[key]:
            return key
print(getKey(mydict,'bob1'))