我有2个列表:
first = ['33', '44', '55', '66', '77', '88', '99', '22']
second = [['1 6'], ['2 7'], ['3 4'], ['5 0'],
['3'], ['6'], ['0'], ['4 1']]
我想制作一个字典,将第一个列表的值作为键,并且也将第一个列表的值作为元素,将第二个列表的元素作为选择第一个列表的索引列表将作为键中的元素。
因此它必须在末尾看起来像这样:
d = {'33' : ['44', '99'], '44' : ['55', '22'],
'55' : ['66', '77'], '66' : ['88', '33'],
'77' : ['55'], '88' : ['99'], '99' : ['33'],
'22' : ['77', '44']}
答案 0 :(得分:1)
您可以对zip
使用字典理解:
first = ['33', '44', '55', '66', '77', '88', '99', '22']
second = [['1 6'], ['2 7'], ['3 4'], ['5 0'], ['3'], ['6'], ['0'], ['4 1']]
final_result = {a:[first[i] for i in map(int, b.split())] for a, [b] in zip(first, second)}
输出:
{'33': ['44', '99'], '44': ['55', '22'], '55': ['66', '77'], '66': ['88', '33'], '77': ['66'], '88': ['99'], '99': ['33'], '22': ['77', '44']}
答案 1 :(得分:0)
似乎您正在尝试根据值列表和邻接列表生成图。
我的第一句话是,您的second
列表应包含索引列表,而不是包含在列表中的单个字符串。
以第一个条目为例...
['1 6']
...会变成这个。
[1, 6]
请注意,我们现在如何使用int
元素来更有意义地表示索引。
切换到这种格式后,您可以更有效地使用dict
处理它以生成图形。
first = ['33', '44', '55', '66']
second = [[1, 2], [2, 3], [3], [0]]
graph = {}
for value, indices in zip(first, second):
graph[value] = [first[i] for i in indices]
# graph
{'33': ['44', '55'],
'44': ['55', '66'],
'55': ['66'],
'66': ['33']
}
如果您已经提交了second
格式的信息,请按以下步骤进行转换。
second = [[int(x) for x in l[0].split()] for l in second]