2017-04-25 105 views
-2

我有一个数据变量在Python中,我不知道访问元素。
这里是数据结构示例:访问python数据结构

('deploy_with_config', [{'port': 80, 'name': 'test1', 'address': '0.0.0.0'}, {'port': 80, 'name': 'test2', 'address': '0.0.0.0'}])

该数据必须在一个文本文件,每一行进入。
对于这个例子:
TEST1 0.0.0.0 80
TEST2 0.0.0.0 80

+3

你尝试过这么远吗? – FLab

+1

问题还不清楚...详细说明 –

回答

0

所以,你有一个元组(不可变列表),你可以索引到。你想要元组中的第二项,所以你可以调用[1]。这是一个词典列表,每个词都由大括号{}分开。要调用字典中的项目,请使用方括号并调用字典键(':'左侧的单词)。这会给你相应的值“test1”等。

如果你不清楚代码是如何工作的,请遍历每个阶段并遍历元组的第一个元素,然后通过字典循环播放调用语法。

a = ('deploy_with_config', [{'port': 80, 'name': 'test1', 'address': '0.0.0.0'}, {'port': 80, 'name': 'test2', 'address': '0.0.0.0'}]) 

for some_dict in a[1]: 
    print(some_dict["name"], some_dict["address"], some_dict["port"]) 
+1

使用'dict'这样的保留名称作为变量名是不鼓励的,因为这里它影响了整个['dict'](https://docs.python.org/3.6/library/) stdtypes.html#dict)类。 –

+0

没有注意到,但你是对的 – TLOwater

0

你的数据结构是一个元组,由一个串和一个列表的。该列表本身包含字典,每个字典都有3个键值对。

你可以找到这类信息是这样的:

>>> unknown_data = ('deploy_with_config', [{'port': 80, 'name': 'test1', 'address': '0.0.0.0'}, {'port': 80, 'name': 'test2', 'address': '0.0.0.0'}]) 

>>> type(unknown_data) 
<class 'tuple'> 
>>> type(unknown_data[0]) 
<class 'str'> 
>>> type(unknown_data[1]) 
<class 'list'> 
>>> type(unknown_data[1][0]) 
<class 'dict'> 

为了让您建议的输出格式,你可以这样做:

for item in unknown_data[1]: 
    print('{0[name]} {0[address]} {0[port]}'.format(item)) 
0

假设数据是一个元组

data = ('deploy_with_config', [{'port': 80, 'name': 'test1', 'address': '0.0.0.0'}, {'port': 80, 'name': 'test2', 'address': '0.0.0.0'}]) 

params = data[1] 
params = [" ".join([item['name'], item['address'], str(item['port'])]) for item in params] 

with open('data.txt') as fw: 
    fw.writelines(params)