Python 再次使用键列表从列表创建dict
我有两张单子Python 再次使用键列表从列表创建dict,python,Python,我有两张单子 listA = (1,2,3,4) listB = (A,B,C,D,A,B,C,D,A,B,C,D,A,B,C,D,A,B,C,D) 我想构建一个字典,重用listA作为listB dict = {1:A,2:B,3:C,4:D,1:A,2:B,3:C,4:D,1:A,2:B,3:C,4:D,1:A,2:B,3:C,4:D,1:A,2:B,3:C,4:D} 我不能使用itertools我还必须考虑到我的一些值是空的,所以我尝试像这样构建dict def create_dict
listA = (1,2,3,4)
listB = (A,B,C,D,A,B,C,D,A,B,C,D,A,B,C,D,A,B,C,D)
我想构建一个字典,重用listA
作为listB
dict = {1:A,2:B,3:C,4:D,1:A,2:B,3:C,4:D,1:A,2:B,3:C,4:D,1:A,2:B,3:C,4:D,1:A,2:B,3:C,4:D}
我不能使用itertools
我还必须考虑到我的一些值是空的,所以我尝试像这样构建dict
def create_dict(keys,values):
return dict(zip(keys, values + [None] * (len(keys) - len(values))))
这只适用于键的长度。您想要生成的dict是不可能的-它包含多个相同键的键,这在dict中是不允许的 您可以有一个指向值列表的单键:
import collections
import itertools
d = collections.defaultdict(list)
for k, v in zip(itertools.cycle(listA), listB):
d[k].append(v)
这将生成一个如下的dict:
{
1: [A, A, A, A],
2: [B, B, B, B],
3: [C, C, C, C],
4: [D, D, D, D],
}
Python dict不能有两个相等的键,如您的示例所示。字典中的键必须是唯一的,因此您的结果是不可能的。您希望从一个看起来多次将完全相同的键映射到完全相同的值的字典中获得什么?您所说的“我的某些值为空”是什么意思?这个问题非常不清楚。根据您所写的内容(这是我们必须继续讨论的唯一内容)不清楚。谢谢,这正是我想要的,因为
listA
是列标题,listB
是单元格values@pyth0nBen听起来很像数据帧。也许你会觉得有用。