0

我有一个元组形式的值字典,如何获取列表形式的值。

我想从元组中获取值并创建新列表并从它们中创建另外 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]
4

5 回答 5

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 或更高版本时才能确保订购该 dict。如果您的 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)
于 2019-12-14T11:50:28.003 回答
1

提供字典

首先取一个空列表并将其分配给变量“l”</p>

使用列表理解分离值并将其存储在变量中

迭代值并附加空列表“l”</p>

现在使用索引值 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))
于 2019-12-14T12:39:25.793 回答
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]])

这是一个数组输出!无论如何,如果你只想要它在列表中,当然,你可以玩它!

于 2019-12-14T11:51:33.367 回答
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]]
于 2019-12-14T11:59:50.710 回答
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]
于 2019-12-14T12:42:57.913 回答