使用多项目python合并元组
我需要脚本将元组与多个项合并。我有:使用多项目python合并元组,python,python-3.x,list,merge,concatenation,Python,Python 3.x,List,Merge,Concatenation,我需要脚本将元组与多个项合并。我有: list = [('France', 'Euro', 'Paris'), ('France', 'Euro', 'Marseille'), ('Allemagne', 'Euro', 'Berlin'), ('Allemagne', 'Euro', 'Hambourg'), ('Allemagne', 'Euro', 'Munich'), ('France', 'Euro', 'Lyon'), ('Turquie', 'Livre', 'Ankara')]
list = [('France', 'Euro', 'Paris'), ('France', 'Euro', 'Marseille'),
('Allemagne', 'Euro', 'Berlin'),
('Allemagne', 'Euro', 'Hambourg'), ('Allemagne', 'Euro', 'Munich'),
('France', 'Euro', 'Lyon'), ('Turquie', 'Livre', 'Ankara')]
我想:
list = [('France', 'Euro', 'Paris', 'Marseille', 'Lyon'),
('Allemagne', 'Euro', 'Berlin', 'Hambourg', 'Munich'),
('Turquie', 'Livre', 'Ankara')]
我发现:
for t in j:
d.setdefault(t[0], set()).add(t[1])
result = tuple(tuple([k]+list(v)) for k, v in d.items())
但我只能合并项目,如果我有两个项目每行
我已尝试修改逻辑,但未成功。您的代码存在多个问题:
列表
类,不应该这样做collections.defaultdict
,后跟列表:
from collections import defaultdict
d = defaultdict(list)
for ctry, ccy, city in L:
d[(ctry, ccy)].append(city)
res = [k+tuple(v) for k, v in d.items()]
print(res)
[('France', 'Euro', 'Paris', 'Marseille', 'Lyon'),
('Allemagne', 'Euro', 'Berlin', 'Hambourg', 'Munich'),
('Turquie', 'Livre', 'Ankara')]
在我看来,您希望遍历列表,并将每个元组的第三个元素(即货币)组合起来,其中包含相同的第二个和第一个元素 我将这样做:
currencies = {}
for i in lists:
if (i[0],i[1]) in currencies.keys():
currencies[(i[0],i[1])] = currencies[(i[0],i[1])]|set([i[2]])
else:
currencies[(i[0],i[1])] = set([i[2]])
lists = []
for c in currencies:
lists.append(list(c) + list(currencies[c]))
print(lists)
这将产生:
['France'、'Euro'、'Marseille'、'Lyon'、'Paris']、['Allemagne'、'Euro'、'Berlin'、'Munich'、'Hambourg']、['Turquie'、'Livre'、'Ankara']
虽然结果不是列表中的元组,但它仍然对数据进行排序,希望这有帮助 请解释要合并哪些元组、基于什么基础以及如何合并。您的示例不清楚。元组中的前两项总是相同的,而第三项总是变化的吗?请不要覆盖
列表
。元组中的前两项始终是StackOverflow的相同对象。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南,在这里应用。为什么要将元组转换为列表并返回元组<代码>[k+tuple(v)代表k,d.items中的v()]@tobias_k,谢谢,这是一个公平的观点,我忘了你可以添加元组(当然,效率很低)。