草庐IT

四元组

全部标签

python - 在 Python 中创建多个项目的元组 n 次

一个列表可以被创建n次:a=[['x','y']]*3#Output=[['x','y'],['x','y'],['x','y']]但我想以这种方式创建一个元组,但它不会返回与列表中相似的结果。我正在做以下事情:a=(('x','y'))*4#Output=('x','y','x','y','x','y','x','y')Expected_output=(('x','y'),('x','y'),('x','y'),('x','y'))有什么建议吗?谢谢。 最佳答案 外括号只是分组括号。您需要添加一个逗号才能使外壳成为一个元组:a=(

python - 合并具有相同键的元组

如何合并具有相同键的元组list_1=[("AAA",[123]),("AAA",[456]),("AAW",[147]),("AAW",[124])]然后把它们变成list_2=[("AAA",[123,456]),("AAW",[147,124])] 最佳答案 最高效的方法是使用collections.defaultdict字典将数据存储为扩展列表,然后在需要时转换回元组/列表:importcollectionslist_1=[("AAA",[123]),("AAA",[456]),("AAW",[147]),("AAW",[1

python - 从键为元组的字典创建数据框

我有以下字典,键为元组:d={('first','row'):3,('second','row'):1}我想创建一个包含3列的数据框:Col1、Col2和Col3,它应该如下所示:Col1Col2Col3firstrow3secondrow4除了逐对解析dict之外,我不知道如何拆分元组。 最佳答案 先构造一个Series,然后重新设置索引就会得到一个DataFrame:pd.Series(d).reset_index()Out:level_0level_100firstrow31secondrow1您可以在之后重命名列:df=pd

python - 更新元组中的列表

这个问题在这里已经有了答案:Appendtoalistdefinedinatuple-isitabug?[duplicate](4个答案)关闭6年前。我只是在解释器中玩弄,遇到了一些我不明白的东西。当我创建一个以列表作为元素之一的元组,然后尝试更新该列表时,会发生一些奇怪的事情。例如,当我运行这个时:tup=(1,2,3,[4,5])tup[3]+=[6]我得到:TypeError:'tuple'objectdoesnotsupportitemassignment这正是我所期望的。然而,当我再次引用元组时,我得到:>>>tup(1,2,3,[4,5,6])所以即使python抛出异常,

python - 对包含元组的元组进行排序

我有以下元组,其中包含元组:MY_TUPLE=(('A','Apple'),('C','Carrot'),('B','Banana'),)我想根据内部元组中包含的second值对该元组进行排序(即,对Apple、Carrot、Banana进行排序,而不是对A、B、C进行排序)。有什么想法吗? 最佳答案 fromoperatorimportitemgetterMY_SORTED_TUPLE=tuple(sorted(MY_TUPLE,key=itemgetter(1)))或者没有itemgetter:MY_SORTED_TUPLE=t

python - 在 Python 中处理单值元组的最佳实践是什么?

我正在使用第3方库函数,它从文件中读取一组关键字,并且应该返回一个值元组。只要至少有两个关键字,它就能正确执行此操作。但是,在只有一个关键字的情况下,它返回一个原始字符串,而不是大小为1的元组。这是特别有害的,因为当我尝试做类似的事情时forkeywordinlibrary.get_keywords():#Dosomethingwithkeyword,在单个关键字的情况下,for连续迭代字符串的每个字符,在运行时或其他情况下不会抛出异常,但对我来说完全没用.我的问题有两个方面:很明显,这是库中的错误,我无法控制。我怎样才能最好地解决它?其次,一般来说,如果我正在编写一个返回元组的函数,

python - 迭代元组列表

我正在寻找一种干净的方法来迭代元组列表,其中每个元组都是一对,例如[(a,b),(c,d)...]。最重要的是,我想更改列表中的元组。标准做法是避免在更改列表的同时迭代它,那么我应该怎么做?这就是我想要的:foriinrange(len(tuple_list)):a,b=tuple_list[i]#updateb'sdata#updatetuple_list[i]tobe(a,newB) 最佳答案 只需替换列表中的元组;您可以在遍历列表时更改列表,只要您避免添加或删除元素:fori,(a,b)inenumerate(tuple_li

python - 在 Python 中,为什么元组可散列而不是列表?

在下面,当我尝试散列列表时,它给了我一个错误,但它适用于元组。猜猜它与不变性有关。有人可以详细解释一下吗?列表x=[1,2,3]y={x:9}Traceback(mostrecentcalllast):File"",line1,inTypeError:unhashabletype:'list'元组z=(5,6)y={z:89}print(y){(5,6):89} 最佳答案 字典和其他对象使用hashes真正快速地存储和检索项目。这一切的机制都发生在“幕后”——你作为程序员不需要做任何事情,Python会在内部处理这一切。基本思想是,

Python - 字典理解中的元组解包

我正在尝试编写一个函数,将'A=5,b=7'形式的字符串转换为字典{'A':5,'b':7}。以下代码片段是在主for循环中发生的事情-它们将字符串的单个部分转换为单个dict元素。这很好:s='A=5'name,value=s.split('=')d={name:int(value)}这不是:s='A=5'd={name:int(value)forname,valueins.split('=')}ValueError:needmorethan1valuetounpack为什么我不能在字典理解中解压元组?如果我能正常工作,那么我可以轻松地将整个函数变成一个紧凑的字典理解。

python - 如何分解元组列表?

定义因式分解:将每个唯一对象映射到一个唯一整数。通常,映射到的整数范围是从零到n-1,其中n是唯一对象的数量。两种变体也是典型的。类型1是按照识别唯一对象的顺序进行编号的地方。类型2是首先对唯一对象进行排序,然后应用与类型1中相同的过程。设置考虑元组列表tupstups=[(1,2),('a','b'),(3,4),('c',5),(6,'d'),('a','b'),(3,4)]我想把它分解成[0,1,2,3,4,1,2]我知道有很多方法可以做到这一点。但是,我想尽可能高效地执行此操作。我尝试过的pandas.factorize并得到一个错误...pd.factorize(tups)[