python中如何将元组展开

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中如何将元组展开相关的知识,希望对你有一定的参考价值。

def func(*arg):
print arg

arg=(1,2,3)
func(arg) #???

如果可迭代元素(列表, 元组, 生成器等)作为参数, 可以使用*展开参数

def func(*arg):    
    print arg
    
arg=(1,2,3)
func(*arg)        # 加个*即可, 你是python2.x的话, 不知道支持不支持

参考技术A func(*arg)就相当于把arg展开成每个参数值,相当于 func(1,2,3)本回答被提问者采纳 参考技术B for item in arg:
print(item)

len(arg)可以获得长度(即元素数目)追问

我是想问,如何实现等价于:
func(1,2,3)

Python:将元组列表转换为dict列表

我有一个元组列表:

[('Lebron James', datetime.date(2017, 12, 23), 500), ('Julie Peralta', 
datetime.date(2017, 12, 13), 1500), ('Reynaldo Pahay', datetime.date(2017, 1
2, 11), 2500)]

我想将其转换为字典列表:

[{'Name':'Lebron James','date' :datetime.date(2017, 12, 23), 'penalty': 
500},{'Name:'Julie Peralta','date': datetime.date(2017, 12, 13),'penalty': 
1500},{'Name:'Reynaldo Pahay','date': datetime.date(2017, 12, 11),'penalty': 
2500}]

什么是最好和最有效的方法呢?

答案

您可以使用zip功能。

import datetime

def get_list_of_dict(keys, list_of_tuples):
     """
     This function will accept keys and list_of_tuples as args and return list of dicts
     """
     list_of_dict = [dict(zip(keys, values)) for values in list_of_tuples]
     return list_of_dict

DEMO

keys = ("name", "date", "penalty")
my_list_of_tuples = [
                      ('Lebron James', datetime.date(2017, 12, 23), 500), 
                      ('Julie Peralta', datetime.date(2017, 12, 13), 1500), 
                      ('Reynaldo Pahay', datetime.date(2017, 12, 11), 2500)
                    ]


print(get_list_of_dict(keys, my_list_of_tuples))
#output
#[{'date': datetime.date(2017, 12, 23), 'penalty': 500, 'name': 'Lebron James'}, {'date': datetime.date(2017, 12, 13), 'penalty': 1500, 'name': 'Julie Peralta'}, {'date': datetime.date(2017, 12, 11), 'penalty': 2500, 'name': 'Reynaldo Pahay'}]
另一答案
import datetime

data = [('Lebron James', datetime.date(2017, 12, 23), 500), 
        ('Julie Peralta', datetime.date(2017, 12, 13), 1500), 
        ('Reynaldo Pahay', datetime.date(2017, 12, 11), 2500)]

print([{'Name': name, 'date': date, 'penalty': penalty} for name, date, penalty in data])
# [{'Name': 'Lebron James', 'date': datetime.date(2017, 12, 23), 'penalty': 500}, {'Name': 'Julie Peralta', 'date': datetime.date(2017, 12, 13), 'penalty': 1500}, {'Name': 'Reynaldo Pahay', 'date': datetime.date(2017, 12, 11), 'penalty': 2500}]
另一答案
import datetime
lista = [('Lebron James', datetime.date(2017, 12, 23), 500), ('Julie Peralta', datetime.date(2017, 12, 13), 1500), ('Reynaldo Pahay', datetime.date(2017, 12, 11), 2500)]
output = [{"name":a[0], "date":a[1],'penalty':a[2]} for a in lista]
print(output)

以上是关于python中如何将元组展开的主要内容,如果未能解决你的问题,请参考以下文章

如何将元组列表从 python 发送和解包到 qml?

如何将元组列表解压缩到单个列表中? [复制]

Python将元组转换为字符串[重复]

scala:将元组引用传递给函数

Python:将元组列表转换为对象列表?

python 将元组列表,字典转换为数据帧