请原谅我的询问,但是尽管有大量的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)。我很沮丧
答案 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()}
使您将密钥设为...,密钥和整体结构变为字典