可能这是关于遍历字典的普通问题。请看下面的imovel.txt文件,其内容如下:
{Andar:["不到"、"segundo",' terceiro '],"Apto":(' 101 ',' 201 ',' 301 ']}
正如你所看到的,这不是一个普通的字典,有一个键值对;但是一个键有一个列表作为key和另一个列表作为value
我的代码是:#/usr/bin/python
def load_dict_from_file():
f = open('../txt/imovel.txt','r')
data=f.read()
f.close()
return eval(data)
thisdict = load_dict_from_file()
for key,value in thisdict.items():
print(value)
和产量:
["不到"、"segundo","terceiro")("101"、"201"、"301")
我想打印一个键,值对,如
{"不到":"101年,"塞贡多":"201"、"terceiro‘:’301’}
给定上面的文本文件,这是可能的吗?
你应该使用内置的json
模块来解析,但无论哪种方式,你仍然会有相同的结构。
你可以做一些事情。如果您知道两个基本键名('Andar'
和'Apto'
),您可以通过zip
将值ping在一起来完成一行dict
推导。
# what you'll get from the file
thisdict = {'Andar': ['primeiro', 'segundo', 'terceiro'], 'Apto': ['101','201','301']}
# One line dict comprehension
newdict = {key: value for key, value in zip(thisdict['Andar'], thisdict['Apto'])}
print(newdict)
如果你不知道键的名字,你可以在迭代器上调用next
,假设它们是结构体中的前两个列表。
# what you'll get from the file
thisdict = {'Andar': ['primeiro', 'segundo', 'terceiro'], 'Apto': ['101','201','301']}
# create an iterator of the values since the keys are meaningless here
iterator = iter(thisdict.values())
# the first group of values are the keys
keys = next(iterator, None)
# and the second are the values
values = next(iterator, None)
# zip them together and have dict do the work for you
newdict = dict(zip(keys, values))
print(newdict)
正如其他人注意到的那样,这看起来像JSON,解析它可能更容易。但如果出于某种原因不能这样做,如果每个键处的所有列表长度相同,则可以这样查看字典:
for i, res in enumerate(dict[list(dict)[0]]):
ith_values = [elem[i] for elem in dict.values()]
print(ith_values)
如果它们都是不同的长度,那么你需要添加一些逻辑来检查并打印一个空白或做一些错误处理,以查看列表的末尾。