dictionaryofinputs = {'0':[0,0],'1':[2,1],'0':[5,1],'1':[20,1]}
我如何用一个键将所有值组成一个新字典? 我尝试过这样的事情:
for item in dictionaryofinputs.values():
if key[0] == '1'
locationcoor = locationcoor + key[1]
但是没有用
感谢您的帮助,我刚开始使用python
答案 0 :(得分:1)
字典使用一系列唯一的keys
来标识一个或一组values
。上面定义字典的方式只会返回0
和1
keys
的第二个实例。您的value
可以重复数据,但不能重复key
。
https://docs.python.org/3/tutorial/datastructures.html
此外,您的字典values
是列表,而不是元组。了解差异非常重要,因为元组是不可变的对象,而列表是可变的对象。
my_tuple = ('value1', 'value2')
my_list = ['value1', 'value2']
如果您想使用key
和value
创建新字典:
my_old_dict = {
'0':[0, 0],
'1':[2, 1],
}
my_new_dict = {}
for key, value in my_old_dict.items():
if key == '1':
my_new_dict[key] = value
print(my_new_dict) #<-- PRINTS {'1': [2, 1]}
其他信息:
您在上面进行编码:
for item in dictionaryofinputs.values():
if key[0] == '1' #<-- THERE IS NO KEY, YOU DID NOT UNPACK ONE.
locationcoor = locationcoor + key[1]
尚未完成,它无法正常工作的最大原因之一是因为您没有将键与值分开。应该是
for item, value in dictionaryofinputs.items():
if item == '1':
locationcoor[item] = value
假设locationcoor
是字典。
答案 1 :(得分:1)
这样的字典不存在,因为keys
是唯一的,但是如果这是一个像lst = [('0',[0,0]), ('1',[2,1]), ('0',[5,1]), ('1',[20,1])]
这样的元组列表,或者对于列表列表是相同的,则这是可能的。我们可以使用sort
,groupby
和字典构造函数
from itertools import groupby
from operator import itemgetter
lst = [('0',[0,0]), ('1',[2,1]), ('0',[5,1]), ('1',[20,1])]
lst = sorted(lst, key=itemgetter(0))
lsta = []
for k, g in groupby(lst, key=itemgetter(0)):
x = list(g)
lsta.append((k, x[0][1] + x[1][1]))
d = dict(lsta)
# {'0': [0, 0, 5, 1], '1': [2, 1, 20, 1]}