如何在 python 中遍历字典中的列表
How to iterate through a list in a dictionary in python
sampleDict={ “A1”:[“234-234-2234”, [“Brown”, “Bill”] ], “B2”:[“654-564-5564”,[“Jones”,”Jennifer”]] }
我得查一下 "john"
在字典里,然后打印 phone 号码以 "654"
开头的每个人的名字和姓氏
我的代码是:
for i in sampleDict.keys():
for key in sampleDict[i]:
print(key)
以及我如何只打印列表中的姓氏:"Brown"
你似乎不关心 key
?
for values in sampleDict.values():
lname = values[1][0] # Assuming that last name is always the first element
fname = values[1][1] # Assuming that first name is always the second element
# Checking if `name` is in names list
if 'john' in values[1]:
# do whatever
一般情况下,您可以通过列表索引访问字典值的不同部分:
for (k,v) in sampleDict.iteritems():
key = k
phone_number = v[0]
last_name = v[1][0]
first_name = v[1][0]
# Do something
每个值只是一个双元素列表,第一个元素对应于 phone 数字,第二个元素本身就是一个列表,元素对应于姓氏和名字。
但是您可以使用类似以下内容来编写您正在寻找的函数:
def is_john_here(d):
for v in d.values():
if v[1][1] == "john": return True
return False
print is_john_here(sampleDict) # False
或者
def find_people_by_number(d, prefix):
for v in d.values():
if v[0].startswith(prefix):
print ', '.join(v[1])
find_people_by_number(sampleDict, '654') # Jones, Jennifer
或(来自评论)
def last_names(d):
for v in d.values():
print v[1][0]
last_names(sampleDict) # Brown
# Jones
sampleDict={ “A1”:[“234-234-2234”, [“Brown”, “Bill”] ], “B2”:[“654-564-5564”,[“Jones”,”Jennifer”]] }
我得查一下 "john"
在字典里,然后打印 phone 号码以 "654"
我的代码是:
for i in sampleDict.keys():
for key in sampleDict[i]:
print(key)
以及我如何只打印列表中的姓氏:"Brown"
你似乎不关心 key
?
for values in sampleDict.values():
lname = values[1][0] # Assuming that last name is always the first element
fname = values[1][1] # Assuming that first name is always the second element
# Checking if `name` is in names list
if 'john' in values[1]:
# do whatever
一般情况下,您可以通过列表索引访问字典值的不同部分:
for (k,v) in sampleDict.iteritems():
key = k
phone_number = v[0]
last_name = v[1][0]
first_name = v[1][0]
# Do something
每个值只是一个双元素列表,第一个元素对应于 phone 数字,第二个元素本身就是一个列表,元素对应于姓氏和名字。
但是您可以使用类似以下内容来编写您正在寻找的函数:
def is_john_here(d):
for v in d.values():
if v[1][1] == "john": return True
return False
print is_john_here(sampleDict) # False
或者
def find_people_by_number(d, prefix):
for v in d.values():
if v[0].startswith(prefix):
print ', '.join(v[1])
find_people_by_number(sampleDict, '654') # Jones, Jennifer
或(来自评论)
def last_names(d):
for v in d.values():
print v[1][0]
last_names(sampleDict) # Brown
# Jones