我有一个元组形式的值字典,如何获取列表形式的值。
我想从元组中获取值并创建新列表,并使用它们的正方形创建另外3个列表。
dictionary={1:(1,2,3),2:(3,4,5),3:(6,7,8),4:(9,10,11),5:(12,13,14)}
s=list(d.values())
d=[item for t in s for item in t]
print(d)
我使用列表理解功能,得到以下输出:
[1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
使用列表理解
预期输出:
[1,3,6,9,12],
[2,4,7,10,13],
[3,5,8,11,14],
squares ** 2在三个列表上方输出:
[1,9,36,81,144],
[4,16,49,100,169],
[9,25,64,121,196]
答案 0 :(得分:2)
您可以使用zip将每个列表的索引元素收集在一起,然后使用列表理解将它们平方起来
dictionary={1:(1,2,3),2:(3,4,5),3:(6,7,8),4:(9,10,11),5:(12,13,14)}
list_vals = list(zip(*dictionary.values()))
squares = [[num ** 2 for num in nums] for nums in list_vals]
print(list_vals)
print(squares)
输出
[(1, 3, 6, 9, 12), (2, 4, 7, 10, 13), (3, 5, 8, 11, 14)]
[[1, 9, 36, 81, 144], [4, 16, 49, 100, 169], [9, 25, 64, 121, 196]]
感谢@roganjosh的评论突出显示,只有在pythong版本为3.6或更高版本时,才能保证可以订购该字典。如果您的python版本小于该版本,则首先需要按键顺序对值进行排序。下面是一个示例。
dictionary={2:(3,4,5),3:(6,7,8),4:(9,10,11),5:(12,13,14),1:(1,2,3)}
ordered_key_val = sorted(dictionary.items(), key=lambda items: items[0])
list_vals = list(zip(*[val for key, val in ordered_key_val]))
squares = [[num ** 2 for num in nums] for nums in list_vals]
print(list_vals)
print(squares)
答案 1 :(得分:1)
一旦获得字典的值,就可以使用numpy
来转置整个列表。您可以使用以下程序
import numpy as np
dictionary={1:(1,2,3),2:(3,4,5),3:(6,7,8),4:(9,10,11),5:(12,13,14)}
list_out= []
for i in dictionary.keys():
list_out.append(dictionary[i])
tran_list = np.transpose(list_out)
out_list = tran_list*tran_list
此输出为:
>>> out_list
array([[ 1, 9, 36, 81, 144],
[ 4, 16, 49, 100, 169],
[ 9, 25, 64, 121, 196]])
这是一个数组输出!无论如何,如果您只希望它在列表中,那么您就可以使用它!
答案 2 :(得分:1)
提供词典
首先获取一个空列表并将其分配给变量“ l”
使用列表理解将值分开并将其存储在变量中
迭代值并附加空白列表“ l”
现在使用索引值i [o],i [1],i [2]迭代“ l”并分别存储在各种变量中
使用map函数对变量求平方并存储值并使用变量列表进行打印
x = {
1:(1,2,3),
2:(4,5,6),
3:(7,8,9),
4:(10,11,12),
5:(13,14,15)
}
l = []
y = [i for i in x.values()]
for i in y:
l.append(i)
print(l)
m = [i[0] for i in l]
n = [i[1] for i in l]
o = [i[2] for i in l]
m1 = map(lambda i:i**2, m)
n1 = map(lambda i:i**2, n)
o1 = map(lambda i:i**2, o)
print(m)
print(list(m1))
print(n)
print(list(n1))
print(o)
print(list(o1))
答案 3 :(得分:0)
您可以这样:
>>> temp = list(zip(*dictionary.values()))
>>> [list(i) for i in temp]
[[1, 3, 6, 9, 12], [2, 4, 7, 10, 13], [3, 5, 8, 11, 14]]
>>> [[i**2 for i in elem] for elem in temp]
[[1, 9, 36, 81, 144], [4, 16, 49, 100, 169], [9, 25, 64, 121, 196]]
答案 4 :(得分:0)
我这里有一本字典
d={1:(1,2,3),2:(4,5,6),3:(7,8,9),4:(10,11,12),5:(13,14,15)}
首先我要在三个列表中获取元组的值,然后在这里使用列表理解下面的代码给出了三个列表中的元组值
myList1 = [d [i][0] for i in (d.keys()) ]
print(myList1)
myList2 = [d [i][1] for i in (d.keys()) ]
print(myList2)
myList3 = [d [i][2] for i in (d.keys()) ]
print(myList3)
所有元组值都转换为列表形式
[1, 4, 7, 10, 13]
[2, 5, 8, 11, 14]
[3, 6, 9, 12, 15]
现在我想在这里对三个列表中的元素求平方。我使用了lambda表达式,下面的代码对列表中的元素求平方
a1= list(map(lambda x: x**2 ,myList1))
print(a1)
a2= list(map(lambda x: x**2 ,myList2))
print(a2)
a3= list(map(lambda x: x**2 ,myList3))
print(a3)
输出为:
[1, 16, 49, 100, 169]
[4, 25, 64, 121, 196]
[9, 36, 81, 144, 225]