[英]Iterate through list of dictionaries and print message
我有一个类似于以下内容的字典列表:
points = [
{"callsign": "A001", "daily_points":10, "number":"+447774076621"},
{"callsign": "A002", "daily_points":5, "number":"+447958708481"}
]
我正在尝试遍历列表以打印如下消息:“嗨 A001,您今天收到了 10 分”
我尝试使用以下代码:
for callsign, daily_points in points.items():
print(f"Hi {callsign} you recieved {daily_points} points today.")
但它返回: AttributeError: 'list' object has no attribute 'items'
我究竟做错了什么?
points
是一个列表,而不是一个字典。 您必须遍历列表中的每个元素,然后阅读字典。 代码看起来像这样:
for point in points:
print(f"Hi {point['callsign']} you received {point['daily_points']} points today.")
您可以使用str.format
:
for point in points:
print("Hi {callsign} you recieved {daily_points} points today.".format(**point))
此外,由于在 python 3.6+ dict 的保留顺序中,您可以保留大部分代码,只需将points.items()
替换为map(dict.values, points)
points.items()
map(dict.values, points)
:
for callsign, daily_points, *_ in map(dict.values, points):
print(f"Hi {callsign} you recieved {daily_points} points today.")
变量“points”是字典列表,而不是字典本身。 要遍历列表中的每个字典,您可以:
points = [
{"callsign": "A001", "daily_points":10, "number":"+447774076621"},
{"callsign": "A002", "daily_points":5, "number":"+447958708481"}
]
for point in points:
print(f"Hi {point['callsign']} you recieved {point['daily_points']} points today.")
这将遍历列表,并打印出每个字典中的信息。
你可以试试这个:
for point in points:
callsign, daily_points, number = point['callsign'], point['daily_points'], point['number']
print(f"Hi {callsign} you recieved {daily_points} points today.")
您可以以points
遍历每条记录并执行此操作。
for i in range(len(points)):
print(f"Hi {points[i]['callsign']} you recieved {points[i]['daily_points']} points today.")
输出
Hi A001 you recieved 10 points today.
Hi A002 you recieved 5 points today.
问题是您正在迭代points
,这是一个列表并且没有items
属性。
一种方法是使用.format
并直接传递字典:
points = [
{"callsign": "A001", "daily_points": 10, "number": "+447774076621"},
{"callsign": "A002", "daily_points": 5, "number": "+447958708481"}
]
for d in points:
print("Hi {callsign} you received {daily_points} points today.".format(**d))
输出
Hi A001 you received 10 points today.
Hi A002 you received 5 points today.
最简单的解决方案如下所示:
for person in points:
print(f"Hi {person['callsign']} you recieved {person['daily_points']} points today.")
您的解决方案是错误的,因为列表没有方法 items(),并且它无法像这样解压缩字典键。
您需要使用密钥访问该值
for user in points:
print(f"Hi {user['callsign']} you recieved {user['daily_points']} points today.")
问题是 items() 方法仅适用于列表,不适用于字典。 但是,您可以尝试以下操作:
for dictionary in points:
print(f"Hi {dictionary['callsign']} you recieved {dictionary['daily_points']} points today.")
或者您可以使用 get() 方法,如下所示:
for dictionary in points:
print(f"Hi {dictionary.get('callsign')} you recieved {dictionary.get('daily_points')} points today.")
你混合 dict 和 list ..
见下文
points = [{
"callsign": "A001",
"daily_points": 10,
"number": "+447774076621"
}, {
"callsign": "A002",
"daily_points": 5,
"number": "+447958708481"
}]
for point in points:
print(
f'Hi {point.get("callsign")} you received {point.get("daily_points")} points today.'
)
输出
Hi A001 you received 10 points today.
Hi A002 you received 5 points today.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.