Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重命名列表中的重复元组_Python_List_Dictionary_Duplicates_Tuples - Fatal编程技术网

Python 重命名列表中的重复元组

Python 重命名列表中的重复元组,python,list,dictionary,duplicates,tuples,Python,List,Dictionary,Duplicates,Tuples,给定一个元组列表: [("heat", 200), ("time", "15:00"), ("time", "16:00")] 如何通过重命名元组的重复“键”来获得以下结果 [("heat", 200), ("time1", "15:00"), ("time2", "16:00")] 解决问题的

给定一个元组列表:

[("heat", 200), ("time", "15:00"), ("time", "16:00")]
如何通过重命名元组的重复“键”来获得以下结果

[("heat", 200), ("time1", "15:00"), ("time2", "16:00")]

解决问题的一个好方法是分解成多个子问题。首先

首先,您可能需要分离出“键”:

然后,您可能要计算一个键出现的次数:

counts = {key: keys.count(key) for key in [i[0] for i in lst]}
counts
>>> {'heat': 1, 'time': 2}
第三,您可能希望循环并重命名出现两次的任何键:

for idx, key in enumerate(keys):
    if counts.get(key) and counts.get(key) > 1:
        for num in range(counts[key]):
            if key+str(num+1) not in keys:
                keys.remove(key) 
                keys.insert(idx+num, key+str(num+1))
keys
>>> ['heat', 'time1', 'time2']
然后,您可以简单地将这些修改过的键与您的值组合,以获得所需的输出:

list(zip(keys,[i[1] for i in lst]))
>>> [('heat', 200), ('time1', '15:00'), ('time2', '16:00')]
如果您使用库,可能会有更有效的方法,但这就是您通过将问题拆分为多个子问题来处理此问题(或为了论证起见)的方法。

请重复并从中删除。“演示如何解决此编码问题”不是堆栈溢出问题。我们希望您做出诚实的尝试,然后就您的算法或技术提出具体问题。堆栈溢出不是为了替换现有的文档和教程。
list(zip(keys,[i[1] for i in lst]))
>>> [('heat', 200), ('time1', '15:00'), ('time2', '16:00')]