Python 3 按特定键值过滤有序字典项目列表
Python 3 filter list of ordered dict items by a specific key value
我正在将其他列表变量的列表迭代到一个有序的字典变量,并将它们附加到一个新的列表变量。我正在尝试过滤新的有序字典条目,以仅获取列表中变量 8 等于 "C" 的结果。不过,我下面的代码给了我一个值错误。
keys = ['key1', 'key2', 'key3', 'key4', 'key5', 'key6', 'key7', 'key8']
blank_list = []
for a in list(zip(var1, var2, var3, var4, var5, var6, var7, var8):
orglist = OrderedDict(zip(keys, a))
orglist2 = {a: b for a, b in orglist if b[8] == 'C'}
blank_list.append(orglist2)
如何解决此问题以仅检索 var8 等于特定值 ('C') 的 ordereddict 值?结果应该是一个有序的 dict 对象列表,其中 var8 等于 'C' 而不管其他变量相等。 var8 的其他潜在值可以为空白或 none.
如果您想保留您的方法,这应该可以解决:
keys = ['key1', 'key2', 'key3', 'key4', 'key5', 'key6', 'key7', 'key8']
blank_list = []
for a in zip(var1, var2, var3, var4, var5, var6, var7, var8):
orglist = OrderedDict(zip(keys, a))
orglist2 = {a: b for a, b in orglist.items() if b[6] == 'C'}
blank_list.append(orglist2)
你的问题是,for a, b in orglist
不起作用,因为遍历字典只会给你字典键。
但也许这会更具可读性:
for a in zip(var1, var2, var3, var4, var5, var6, var7, var8):
if a[6] == 'C':
blank_list.append(dict(zip(keys, a)))
或
for a in zip(var1, var2, var3, var4, var5, var6, var7, var8):
orglist = OrderedDict(zip(keys, a))
if orglist['key7'] == 'C':
blank_list.append(orglist)
我正在将其他列表变量的列表迭代到一个有序的字典变量,并将它们附加到一个新的列表变量。我正在尝试过滤新的有序字典条目,以仅获取列表中变量 8 等于 "C" 的结果。不过,我下面的代码给了我一个值错误。
keys = ['key1', 'key2', 'key3', 'key4', 'key5', 'key6', 'key7', 'key8']
blank_list = []
for a in list(zip(var1, var2, var3, var4, var5, var6, var7, var8):
orglist = OrderedDict(zip(keys, a))
orglist2 = {a: b for a, b in orglist if b[8] == 'C'}
blank_list.append(orglist2)
如何解决此问题以仅检索 var8 等于特定值 ('C') 的 ordereddict 值?结果应该是一个有序的 dict 对象列表,其中 var8 等于 'C' 而不管其他变量相等。 var8 的其他潜在值可以为空白或 none.
如果您想保留您的方法,这应该可以解决:
keys = ['key1', 'key2', 'key3', 'key4', 'key5', 'key6', 'key7', 'key8']
blank_list = []
for a in zip(var1, var2, var3, var4, var5, var6, var7, var8):
orglist = OrderedDict(zip(keys, a))
orglist2 = {a: b for a, b in orglist.items() if b[6] == 'C'}
blank_list.append(orglist2)
你的问题是,for a, b in orglist
不起作用,因为遍历字典只会给你字典键。
但也许这会更具可读性:
for a in zip(var1, var2, var3, var4, var5, var6, var7, var8):
if a[6] == 'C':
blank_list.append(dict(zip(keys, a)))
或
for a in zip(var1, var2, var3, var4, var5, var6, var7, var8):
orglist = OrderedDict(zip(keys, a))
if orglist['key7'] == 'C':
blank_list.append(orglist)