首页 > 解决方案 > 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"""

标签: pythondictionary

解决方案


如果您希望对到目前为止所做的工作进行最小的更改,您可以获取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 中的关键字


推荐阅读