让我们假设,我在python中有一个键值对,如下所示。
a = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'test1', 'test', '', '', '', '', '', '', '', '', '', '']
现在我想将这些值与:
组合在一起b = {"18", "17", "16", "15", "14", "13", "12", "11", "21", "22", "23", "24", "25", "26", "27", "28","48", "47", "46", "45", "44", "43", "42", "41", "31", "32", "33", "34", "35", "36", "37", "38"}
有什么方法可以将变量a
的值与下面显示的\ b
结果相结合:
c = {'44': ['test1'], '43': ['test2']}
谢谢。
答案 0 :(得分:0)
您正在寻找zip
,如下所示:
>>> dict(zip(b, filter(None, a)))
{'43': 'test1', '17': 'test'}
请记住,这会在运行时产生不同的结果,因为集合是无序的。
答案 1 :(得分:0)
您可以使用zip
来解决问题:
a = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'test1', 'test', '', '', '', '',
'', '', '', '', '', '']
b = ["18", "17", "16", "15", "14", "13", "12", "11", "21", "22", "23", "24", "25", "26", "27", "28", "48", "47", "46",
"45", "44", "43", "42", "41", "31", "32", "33", "34", "35", "36", "37", "38"]
print dict((x, y) for x, y in zip(b, a) if y != '')
你会得到输出:
{'44': 'test1', '43': 'test'}
如果您想了解有关此类python内置函数的更多信息,请参阅此official document。
答案 2 :(得分:0)
集合是无序的,这使得直接解决方案成为问题。但是,假设您为了消除原始列表中的重复项而创建了集合,您可以使用不同的重复删除方法,并结合使用压缩文件,正如Francisco的答案所示,尽管没有过滤器与项目不匹配:
a = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'test1', 'test', '', '', '', '', '', '', '', '', '', '']
b_list = ["18", "17", "16", "15", "14", "13", "12", "11", "21", "22", "23", "24", "25", "26", "27", "28","48", "47", "46", "45", "44", "43", "42", "41", "31", "32", "33", "34", "35", "36", "37", "38", "18", "17"]
# added hypothetical duplicates to b for the sake of showing how they're removed below
b = sorted(set(b_list), key=lambda x: b_list.index(x))
c = dict(zip(a, b))
del c[''] # removes the erroneous '' key
完全按照您的要求输出:
{'44': 'test1', '43': 'test'}