for循环内的字典不会转移到for循环外-Python

时间:2018-11-06 04:16:17

标签: python python-3.x loops dictionary for-loop

我正在尝试根据参考.txt文件中的值制作字典,但是当我制作字典并打印它时,在for循环中我得到了所需的结果:

    ref = open("reference.txt", "r")
    contents = ref.read().splitlines()

    for line in contents:
        data = line.split(",")
        i = iter(data)
        newData = dict(zip(i, i))
        print(newData)

    Output:
    {"Bob's Diner": '001100111'}
    {"Jim's Grill": '001100111'}
    {"Tommy's Burger Shack": '01011101'}

但是当我将print语句放在for循环之外时,我得到了不同的结果:

    ref = open("reference.txt", "r")
    contents = ref.read().splitlines()

    for line in contents:
        data = line.split(",")
        i = iter(data)
        newData = dict(zip(i, i))

    print(newData)

    Output:
    {"Tommy's Burger Shack": '01011101'}

如何解决此问题,以便将其编译为一个可用的集体词典?

3 个答案:

答案 0 :(得分:6)

您的代码newData在每次循环迭代中都指向一个新字典,只需在外部创建一个字典并对其进行更新:

newData = {}
for line in contents:
    data = line.split(",")
    i = iter(data)
    newData.update(dict(zip(i, i)))

print(newData)

答案 1 :(得分:0)

之所以发生这种情况,是因为您在循环的每次迭代中都在制作新的字典。在循环外部定义dict将解决问题。

答案 2 :(得分:0)

只需尝试在循环开始之前创建一个字典,这样就可以将数据存储在那里并从中取出打印语句。

ref = open("reference.txt", "r")
contents = ref.read().splitlines()

newData = {}
for line in contents:
    data = line.split(",")
    i = iter(data)
    newData = dict(zip(i, i))

print(newData)