2017-06-13 58 views
1

在我的要求中,列表是动态创建的,每次收集带有不同列的字典。所以每次我需要打印的东西都会根据一些逻辑而有所不同。python中变量值的变量

如果我创建if .. else statement for each case我可以打印什么我想要的。

在这里,我有太多的情况下,所以我不想写很多如果...... esle陈述只是为了打印。

取而代之的是我想阅读我需要从配置文件打印并打印实际值。 'age':22,'place':'huj'},{'name':'hjhd','age':44,'''''''''''''''''''''''''''''''''''''''地方”:‘疫情周报’}]

要打印的姓名和年龄列

the following code will do my work. 
if id == 1: 
    for i in list1: 
     i['name']+","+i['age'] 
elif id == 2: 
    for i in list1: 
     i['account']+","+i['spend'] 
elif id == 3: 
    for i in list1: 
     i['percentage']+","+i['rank'] 

我只是想只写一个,如果else语句因为我有100多例

相反。写这些很多if else语句是否有任何其他方式,我可以通过使用ConfigParser或其他任何东西来处理此问题。

回答

2

如何:

x = ["name", "age"] 
for i in list1: 
    for k in x: 
     print list1[i][k] 
+0

我会回答相同,但问题是真的不清楚:) – RaphaMex

+0

我同意。通过“变量”,我假设'x'实际上是编程设定的...如果它是固定的,那么@Hhgh的答案可能会更好。 – Scott

+0

斯科特 - 我在文件中存储了所有需要打印的东西。在文件我['名称'] +“,”+我['年龄'] - 将在那里我读取和存储在一个变量,我想打印 – user374374

5

您可以使用打印格式像

for entry in list1: 
    print("{name}, {age} ({place})".format(**entry)) 
+0

真正的优雅!好的! – Ding

0

我也很被这个问题困惑,但这里是另一种选择

list1=[{'name': 'xyz', 'age' : 22, 'place' : 'huj'}, {'name' : 'hjhd", 'age' : 44, 'place' : 'wer'}] 

key1 = "name" 
key2 = "age" 
key3 = "place" 

x = [li[key1] + li[key2] + li[key3] for li in list1] 
print x 
+0

Deric,在我的要求中,列表是动态创建的,具有不同列的字典集合。所以每次我需要打印的东西都会根据一些逻辑而有所不同。如果我为每个案例创建if语句,我可以打印出我想要的东西。在这里,我有太多的案例,所以我不想写很多,如果...... esle声明只是为了打印。而不是我想阅读我需要从配置文件打印并打印实际值。例如,在这里我想打印姓名和年龄。我想从配置文件中读取参数并打印实际值。 – user374374