Python 逐行打印字典元素

Python 逐行打印字典元素,python,Python,我在一个文件中有一个字典,我应该编写一个python代码,以单独的行打印键和值。(不使用.keys()和.values() 例如:dict={“the”:“1”,“and”:“2”}应返回为 the:1 and:2 这是我试过的代码。我是python字典的新手。请帮我解决这个问题 dict2 = {} f= open("dict.txt", 'r') for line in f: it = line.split() k, v =

我在一个文件中有一个字典,我应该编写一个python代码,以单独的行打印键和值。(不使用.keys()和.values()

例如:dict={“the”:“1”,“and”:“2”}应返回为

the:1          
and:2 
这是我试过的代码。我是python字典的新手。请帮我解决这个问题

dict2 = {}

f= open("dict.txt", 'r')
    for line in f:
        it = line.split()
        k, v = it[0], it[1:]
        dict2[k] = v
return (dict2)
line.split()

还要注意

it = line.split(':')
k, v = it[0], it[1:]
可以简化为

k, v = line.split(':')
编辑:实际上这两个函数的作用不同,但是作为
line.split()
应该只有两个元素,
k,v=line.split(':')
将执行您想要的操作,而
it[1://code>将返回
['1']
而不是
'1'

虽然我想要更优雅地处理解析问题,您可以:

it = line.split()
if len(it) != 2:
    print "Error!"
k, v = it[0], it[1]  # note it[1] and not it[1:]

如果您试图使用标准dict(python dict对象不保持顺序)以与文件中显示的相同顺序打印字典中的键值,则无法正常工作。假设您希望按dict值的值打印

lines = ["the 1", "and 2"]
d = {}

for l in lines:
    k, v = l.split()
    d[k] = v

for key in sorted(d, key=d.get, reverse=True):
    print ":".join([key, d[key]])
假设您可以使用
lambda
和字符串串联

lines = ["the 1", "and 2"]
d = {}

for l in lines:
    k, v = l.split()
    d[k] = v

for key in sorted(d, key=lambda k: d[k], reverse=True):
    print key + ":" + d[key]
没有lambda

for value, key in sorted([(d[k], k) for k in d], reverse=True):
    print key + ":" + value
把它变成一个函数

def lines_to_dict(lines):
    return_dict = {}
    for line in lines:
        key, value = line.split()
        return_dict[key] = value

    return return_dict

if __name__ == "__main__":

    lines = ["the 1", "and 2"]
    print lines_to_dict(lines)

只要键/值都是字符串,那么您就可以解析字典并提取元素。注意,因为这实际上并没有创建字典,所以会保留重复的元素和顺序—您可能希望对此进行说明

import ast

text = '{"the":"1", "and":"2"}'
d = ast.parse(text).body[0].value
for k, v in zip(d.keys, d.values):
    print '{}:{}'.format(k.s, v.s)

您好,我不能使用.join和.get,但可以使用.sorted()和.split()。是否可以修改您的代码?您好,谢谢,但我也不能使用lambda。除了.split(),.sorted()之外,不能使用任何内置函数@Pramod,作为将来的参考,您应该提前为您的问题添加任何解决方案约束=P。当然,john,谢谢。还有一个问题。程序应该返回一个值,而不是打印。就像我应该将新字典存储在另一个变量中,然后返回它一样。我尝试修改您的代码,但没有成功,因为我是此ar的新手ea.你确定要返回dict吗,请记住字典不会维护排序信息。如果你想维护信息的顺序,可以使用元组或列表。我建议使用元组或列表。但是,如果你不能使用lambda、join或get,我怀疑你是否能够使用它。如果你想从程序返回某些信息,你必须e使用函数声明。(又称
def
关键字)@Pramod什么不起作用?它给你一个运行时错误?它没有产生正确的输出?
import ast

text = '{"the":"1", "and":"2"}'
d = ast.parse(text).body[0].value
for k, v in zip(d.keys, d.values):
    print '{}:{}'.format(k.s, v.s)