python - 从列表创建字典

标签 python list dictionary

从这个元组列表:

[('IND', 'MIA', '05/30'), ('ND', '07/30'), ('UNA', 'ONA', '100'), \
('LAA', 'SUN', '05/30'), ('AA', 'SN', '07/29'), ('UAA', 'AAN')] 

我想创建一个字典,其中的键是 [0][1] 每三个元组 的值。因此,创建的字典的第一个键应该是'IND, MIA',第二个键是'LAA, SUN'

最终结果应该是:

{'IND, MIA': [('IND', 'MIA', '05/30'), ('ND', '07/30'), ('UNA', 'ONA', '100')],\
'LAA, SUN': [('LAA', 'SUN', '05/30'), ('AA', 'SN', '07/29'), ('UAA', 'AAN')]}

如果这有任何相关性,一旦有问题的值成为键,它们可能会从元组中删除,从那时起我就不再需要它们了。非常感谢任何建议!

最佳答案

inp = [('IND', 'MIA', '05/30'), ('ND', '07/30'), ('UNA', 'ONA', '100'), \
       ('LAA', 'SUN', '05/30'), ('AA', 'SN', '07/29'), ('UAA', 'AAN')]

result = {}
for i in range(0, len(inp), 3):
    item = inp[i]
    result[item[0]+","+item[1]] = inp[i:i+3]

print (result)

字典理解解决方案是可能的,但有些困惑。

要从数组中删除键,请将第二个循环行 (result[item[0]+ ...) 替换为

result[item[0]+","+item[1]] = [item[2:]]+inp[i+1:i+3]

Dict comprehension 解决方案(比我最初想象的要简单一点:))

rslt = {
    inp[i][0]+", "+inp[i][1]: inp[i:i+3]
    for i in range(0, len(inp), 3)
}

要在答案中添加更多犹太洁食,这里有一些有用的链接:):defaultdict , dict comprehensions

关于python - 从列表创建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16865229/

相关文章:

java - Java中list和map是如何处理null元素的

ios - 单例中使用的字典内存泄漏

java - 在映射中多次添加相同的类对象作为 KEY

python - 光谱聚类 Scikit 学习集群中的打印项目

python - 将元素 append 到 Python 中的空列表字典

Python:应该从 Exception 类还是从 ValueError 类派生新的 RangeError 异常?

JavaScript - 从字典键生成组合并动态保留键名

python - 在Python中的不同条件下匹配具有相同名称的子组

python - 使列表中的列表元素不是别名

python - 如何从 Python 的 for 循环中的列表中获取某些值?