追加列表字典时遇到问题

时间:2019-01-31 13:54:41

标签: python

 for li in list2:
            tid=li
            for i,li2 in enumerate(list):
                s2=li2
                if (s2.find(tid)>0 ):
                    i+=1
                    s3=list[i]
                    y=s3.find('RUNNABLE')
                    if( y>0 ) :
                        dict={tid:[].append('RUNNABLE')

我正在尝试附加字典和列表。 外循环将从列表中获取元素,该元素将最终成为键,而内循环将追加列表。 但输出为{'tid = value':None}

2 个答案:

答案 0 :(得分:0)

问题出在dict={tid:[].append('RUNNABLE')中。试试这个:

print([].append('RUNNABLE'))

append的返回值为None。您想做的可能是这样:

a = {}
a.setdefault('foo', []).append('RUNNABLE')
print(a) # {'foo': ['RUNNABLE']}
a.setdefault('foo', []).append('RUNNABLE')
print(a) # {'foo': ['RUNNABLE', 'RUNNABLE']}

如果setdefault方法不存在,则将第二个参数插入键下并返回。否则,它将返回它。这样的单次使用是:

if 'foo' not in a:
    a['foo'] = []
a['foo'].append('RUNNABLE')

另一个解决问题的方法是defaultdict,但是对于像这样的简单案例来说,这有点过分了。

答案 1 :(得分:0)

您的代码有点混乱,这是建议吗?

list_keys = ['a', 'b', 'c']
list_values = ['not RUNNABLE', 'not RUNNABLE', 'c RUNNABLE']
list_dict = []

for key in list_keys:
    for index, value in enumerate(list_values):
        if key in value:
            if 'RUNNABLE' in value:
                list_dict.append({key: ['RUNNABLE']})
print(list_dict)