使用python字典和列表元素创建列表项

时间:2018-12-13 23:27:27

标签: python dictionary

请原谅我的询问,但是尽管有大量的dictionary.update线程,但我找不到我想做的例子。

我有字典:

dictionary = {1:'a', 2:'b', 3:'c', 4:'d'}

我有一个列表:

zip_codes = [25840, 26807, 24739, 26501]

我想将每个列表项添加到字典值中。结果如下:

dictionary = {1:('a', 25840), 2:('b', 26807), 3:('c', 24739), 4:('d', 26501)}

我获得的最好结果是尝试以下方法:

for i in zip_codes:
    new_list = [(key,value, i) for key, value in dictionary.items()]

print(new_list)

但这将返回以下内容:

[(1, 'a', 26501), (2, 'b', 26501), (3, 'c', 26501), (4, 'd', 26501)]

由于我正在遍历列表项,因此得到的最后一个列表项(26501)。我很沮丧

4 个答案:

答案 0 :(得分:3)

我想,字典键是您希望邮政编码附加的顺序?

dictionary = {1:'a', 2:'b', 3:'c', 4:'d'}
zip_codes = [25840, 26807, 24739, 26501]

for i, zip_code in enumerate(zip_codes, 1):
    dictionary[i] = (dictionary[i], zip_code)

print(dictionary)

哪些印刷品

{1: ('a', 25840), 2: ('b', 26807), 3: ('c', 24739), 4: ('d', 26501)}

您可能想看一下有关enumerate的Python文档,或者有关Stack What does enumerate mean?的问题(请参见StackOverflow)

答案 1 :(得分:2)

借助dict理解,您可以在字典中进行枚举,并将新值设置为现有值和相应邮政编码的元组:

new_dict = {k:tuple([v,zip_codes[i]]) for i, (k,v) in enumerate(dictionary.items())}
>>> new_dict
{1: ('a', 25840), 2: ('b', 26807), 3: ('c', 24739), 4: ('d', 26501)}

或者非常相似,您可以压缩字典和邮政编码并进行迭代:

new_dict = {k:tuple([v,z]) for z, (k,v) in zip(zip_codes,dictionary.items())}
>>> new_dict
{1: ('a', 25840), 2: ('b', 26807), 3: ('c', 24739), 4: ('d', 26501)}

答案 2 :(得分:2)

您可以只使用dictionary.update,并且由于您使用数字作为字典键,因此可以使用常规的旧for循环,甚至不必使用enumerate,但是您可以必须记住列表索引从0开始,而字典键从1开始。

dictionary = {1:'a', 2:'b', 3:'c', 4:'d'}
zip_codes = [25840, 26807, 24739, 26501]

for i in range(1, len(zip_codes)+1):
    d1 = {i:[dictionary[i], zip_codes[i-1]]}
    dictionary.update(d1)

print(dictionary)
>>>{1: ['a', 25840], 2: ['b', 26807], 3: ['c', 24739], 4: ['d', 26501]}

答案 3 :(得分:0)

将new_list更改为

   new_list = {key: (value, i) for key, value in dictionary.items()}

使您将密钥设为...,密钥和整体结构变为字典