gpt4 book ai didi

python - 迭代字典和列表的 Pythonic 方法是什么?

转载 作者:行者123 更新时间:2023-11-28 22:03:04 25 4
gpt4 key购买 nike

我有一个字典,其中包含一些列表和一些字典,如下图所示。

迭代字典并打印出每个顶级字典键的名称和地址对的最 pythonic 方法是什么?

谢谢

{
'Resent-Bcc': [],
'Delivered-To': [],
'From': {'Name': 'Steve Watson', 'Address': 'steve.watson@example.org'},
'Cc': [],
'Resent-Cc': [],
'Bcc': [ {'Name': 'Daryl Hurstbridge', 'Address': 'daryl.hurstbridge@example.org'},
{'Name': 'Sally Hervorth', 'Address': 'sally.hervorth@example.org'},
{'Name': 'Mike Merry', 'Address': 'mike.merry@example.org'},
{'Name': 'Jenny Callisto', 'Address': 'jenny.callisto@example.org'}
],
'To': {'Name': 'Darius Jedburgh', 'Address': 'darius.jedburgh@example.org'}
}

最佳答案

在字典上使用 iteritems() 方法。它清晰易懂:对我来说这似乎是 Pythonic。 iteritems() 还创建了比 items() 更少的临时项,正如 Preet Kukreti 在评论中提到的那样。首先,修复您的数据。现在,顶级字典中的一些值是列表,而一些是更多字典:

# list
'Delivered-To': [],
# dict
'From': {'Name': 'Steve Watson', 'Address': 'steve.watson@example.org'},

这意味着您必须检查值的类型并采取相应行动(而且您可能会忘记检查!)。使您的数据保持一致:

# list
'Delivered-To': [],
# also list
'From': [{'Name': 'Steve Watson', 'Address': 'steve.watson@example.org'}],

这将防止将来出现与类型相关的奇怪错误。由于 Python 是一种解释型语言,因此很容易产生类型错误,并且直到您的代码投入生产并崩溃时才被发现。尽量使您的代码类型安全!

然后你可以使用这样的东西:

for k, v in d.iteritems():
for row in v:
if "Name" in row and "Address" in row:
print row["Name"], ":", row["Address"]

关于python - 迭代字典和列表的 Pythonic 方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9986188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com