将2个列表和1个字符串转换为字典

2024-10-03 04:25:56 发布

您现在位置:Python中文网/ 问答频道 /正文

P.S: Thank you everybody ,esp Matthias Fripp . Just reviewed  the question You are right I made mistake : String is value not the key 
num=[1,2,3,4,5,6]
pow=[1,4,9,16,25,36]
s= ":subtraction"    
dic={1:1 ,0:s , 2:4,2:s, 3:9,6:s, 4:16,12:s.......}

有一种简单的方法可以将两个列表转换为字典:

newdic=dict(zip(list1,list2))

但对于这个问题,即使理解也没有线索:

print({num[i]:pow[i] for i in range(len(num))})

Tags: therightyounumarejustquestionthank
2条回答

正如其他人所说,dict不能包含重复的键。您可以通过稍微调整来复制关键点。我使用OrderedDict来保持插入键的顺序:

from pprint import pprint
from collections import OrderedDict

num=[1,2,3,4,5,6]
pow=[1,4,9,16,25,36]

pprint(OrderedDict(sum([[[a, b], ['substraction ({}-{}):'.format(a, b), a-b]] for a, b in zip(num, pow)], [])))

印刷品:

OrderedDict([(1, 1),
             ('substraction (1-1):', 0),
             (2, 4),
             ('substraction (2-4):', -2),
             (3, 9),
             ('substraction (3-9):', -6),
             (4, 16),
             ('substraction (4-16):', -12),
             (5, 25),
             ('substraction (5-25):', -20),
             (6, 36),
             ('substraction (6-36):', -30)])

原则上,这会满足您的要求:

nums = [(n, p) for (n, p) in zip(num, pow)]
diffs = [('subtraction', p-n) for (n, p) in zip(num, pow)]
items = nums + diffs
dic = dict(items)

但是,一个字典不能有多个具有相同键的项,因此您的每个“减法”项都将被添加到字典的下一个项替换,并且您只能得到最后一个。因此,您可能更喜欢直接使用items列表。你知道吗

如果您需要如您所示排序的items列表,那将需要更多的工作。可能是这样的:

items = []
for n, p in zip(num, pow):
    items.append((n, p))
    items.append(('subtraction', p-n))
# the next line will drop most 'subtraction' entries, but on 
# Python 3.7+, it will at least preserve the order (not possible 
# with earlier versions of Python)
dic = dict(items)

相关问题 更多 >