需要帮助迭代字典 - Python

时间:2015-10-23 19:03:47

标签: python for-loop dictionary

我是Python的初学者。 我有一个名为G8_Leaders.txt的简单字典 - 如下:{Cameron:英国,默克尔:德国,奥巴马:美国,普京:俄罗斯} 我正在尝试遍历这些对 - 在列中显示内容,使用基本的“for”循环,如下所示:

f0 = "G8_Leaders.txt"
f1 = open(f0)
    for i in f1:
        print(i, end=" ")
    else:
        print("Finished with Document: ", f0)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~

我希望列中的结果,例如:

默克尔德国

Cameron UK

奥巴马美国

等等......但是,结果只打印在一行中,因为它们显示在文本文件中。

这样做的正确方法是什么?

5 个答案:

答案 0 :(得分:1)

首先,您必须在文件中修复字典的表示形式:

d = {'Cameron':'UK', 'Merkel':'Germany', 'Obama':'USA', 'Putin':'Russia'} 可以通过在str()的每个键和值上调用d以编程方式完成此操作。 假设这是固定的,一个解决方案是:

# Create a file for test bench: 
d = {'Cameron':'UK', 'Merkel':'Germany', 'Obama':'USA', 'Putin':'Russia'}
with open("G8_Leaders.txt", "w") as f:
    f.write(str(d) +'\n')

#Read and print from the file:
with open("G8_Leaders.txt", "r") as f:
    data = f.readlines()
for line in data:
    d = eval(line)
    for y, z in d.items():
        print(y, z)

输出:

Cameron UK
Merkel Germany
Putin Russia
Obama USA

答案 1 :(得分:0)

好的,这里有几件事情正在发生。 f1是一个文件对象,这不是您所期望的。如果你想以字符串形式访问它,你可以

`f1_string = f1.read()`

将文件作为字符串读入变量f1_string。你可以这样做:

for line in f1.readlines():
    # operate on one line at a time in this block

如果您希望一次读取一行,如果每个元素在文本文件中都在自己的行上,那么这将适用于您的情况。由于我们不知道您的文本文件究竟是什么样子,因此很难提供更具体的帮助。人们所指的json模块可以找到here,但我不完全确定这是你想要的。

答案 2 :(得分:0)

假设您的文本文件与您所描述的一样,请尝试以下操作:

    with open(f0, 'r') as f:
        for line in f:
            items = line.split(',')
            for item in items:
                leader = item.split(':')[0].replace('{','')
                country = item.split(':')[1].replace('}','')
                print(leader,country)

无论您的数据是否包含换行符,这都应该有效。

答案 3 :(得分:0)

尝试此操作来迭代字典:

leaders = {'Cameron':'UK', 'Merkel':'Germany', 'Obama':'USA', 'Putin':'Russia'}
for leader in leaders:    
    print(leader, leaders[leader])

答案 4 :(得分:-1)

public static

只需将其加载为json(至少我认为如果您在文本文件中正确格式化了json ,则不完全清楚)...(尽管字典是无序的,但如果您需要某个字典,则会发出警告订购你必须提供更多的澄清)