items = [('Value1','Value2','Value3'),('Value4','Value5','Value6'),('Value7','Value8','Value9')]
我已经制作了一个“for”循环来列出词典:
final_list = []
for string1, string2, string3 in items:
item_data = ({'key1': string1, 'key2': string2, 'key3': string3})
final_list.append(item_data)
print final_list
[{'key1': Value1, 'key2': Value2, 'key3': Value3},{'key1': Value4, 'key2': Value5, 'key3': Value6}...]
我想要实现的是根据key1,value1(string1)对的条件插入另一个键值对。
我将此条件放在上面的for循环中:
if 'Value1' or 'Value4' in string1:
string4 = 'somevalue1'
elif 'Value7' or 'Value8' in string1:
string4 = 'somevalue2'
else:
string4 = ''
然后将字典改为如下:
item_data = ({'key1': string1, 'key2': string2, 'key3': string3, 'key4': string4})
但是我没有得到我的预期,而是得到了这个:
[{'key1': Value1, 'key2': Value2, 'key3': Value3, 'key4': 'somevalue1'},{'key1': Value4, 'key2': Value5, 'key3': Value6, 'key4': 'somevalue1'}...]
我期望key4的值根据key1(string1)的值和上面的语句填充,但不检查下一个项目。它持续存在'somevalue1'。
答案 0 :(得分:0)
我将所有作品放在一起然后一切正常
items = [('Value1','Value2','Value3'),('Value4','Value5','Value6'),('Value7','Value8','Value9')]
final_list = []
for string1, string2, string3 in items:
if 'Value1' in string1:
string4 = 'somevalue1'
elif 'Value2' in string1:
string4 = 'somevalue2'
else:
string4 = ''
item_data = ({'key1': string1, 'key2': string2, 'key3': string3, 'key4': string4})
final_list.append(item_data)
print final_list
输出:
[{'key4': 'somevalue1', 'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}, {'key4': '', 'key1': 'Value4', 'key2': 'Value5', 'key3': 'Value6'}, {'key4': '', 'key1': 'Value7', 'key2': 'Value8', 'key3': 'Value9'}]
更新(由于您已更新问题)
条件问题
因为if 'Value1' or 'Value4' in string1:
等于if ('Value1') or ('Value4' in string1):
这始终是True
,因为只有空字符串False
为了使您的代码有效,请更改条件块:
if string1 in ('Value1', 'Value4'):
string4 = 'somevalue1'
elif string1 in ('Value7', 'Value8'):
string4 = 'somevalue2'
else:
string4 = ''