python - Python字典:迭代字典的不同方式
问题描述
我正在寻找一种不同的方式来访问 for 循环中字典中的每个键。下面是一个示例代码,我在其中遍历字典并在计数器和 if 语句的帮助下访问每个键。没有计数器或 if 语句,是否有另一种访问密钥的方法?
def string_to_dict(csv):
dict = []
tmp = csv.splitlines()
for i in tmp:
tmp_dict = {"vorname" : "none", "nachname" : "none", "email" : "none"};
tmp_i= i.split(",")
counter = 0;
for si in tmp_i:
if counter ==0:
tmp_dict["vorname"] = si
counter =counter + 1
elif counter == 1:
tmp_dict["nachname"] = si
counter = counter + 1
else:
tmp_dict["email"] = si
dict.append(tmp_dict)
csv = """Donald,Duck,d.duck@entenhausen.com
Wiley,Coyote,whiley@canyon.org
Road,Runner,roadrunner@canyon.org"""
解决方案
如果您希望对到目前为止所做的工作进行最小的更改,您可以获取list of keys
并使用该index
值(在您的情况下为计数器变量),如下所示:
for i in tmp:
tmp_dict = {"vorname" : "none", "nachname" : "none", "email" : "none"};
tmp_i= i.split(",")
counter = 0;
keys = [*temp_dict.keys()] # List of Keys
for si in tmp_i:
tmp_dict[keys[counter]] = si # Key at index counter
counter += 1
dict.append(tmp_dict)
样品运行:
>>string_to_dict(csv)
[{'vorname': ' Road', 'nachname': 'Runner', 'email': 'roadrunner@canyon.org'}, {'vorname': ' Road', 'nachname': 'Runner', 'email': 'roadrunner@canyon.org'}, {'vorname': ' Road', 'nachname': 'Runner', 'email': 'roadrunner@canyon.org'}]
另一个注意事项:您将变量命名为dict
您应该避免这种情况,因为它是 Python 中的关键字
推荐阅读
- google-api - 尝试使用 Python 的库在 GAPI Drive v3 中按文件 ID 查询时出错
- java - 尽管使用正确的输出编写了正确的代码,但仍获得 WA
- curl - curl:(6)无法解析主机:在 WSL 上
- linux - RPM post scriptlets 权限被 docker 命令拒绝
- azure-devops - 用于创建管道的 Azure Devops REST API 与源提供程序 bitbucket 不工作
- java - 提取名称,用双引号括起来从字符串到列表
- javascript - 特定用户的前端切换功能标志
- c# - 无法创建“AppDbContext”类型的对象
- javascript - Python socket.io ack 函数
- javascript - 如何将多个 then() 承诺合二为一