[英]How can I map lists to dict key as value
我有一個迭代器對象,然后迭代時它的每個項屬性都是對時間和值感興趣的
[(point.time, point.value) for point in control_points]
[(Fraction(-1, 23), Fraction(0, 1)), (Fraction(24, 23), Fraction(100, 1))]
時間和價值都是Fraction
對象
現在我必須構建一個映射的數據結構,第一個元組是帶有in_time dict的元組,第二個元組帶有out_time dict
({'in_time': "" , 'in_value': ""} , {'out_time': "", 'out_value': ""})
我也嘗試過以不同的方式使用這樣的列表:
container = [['in_time', 'in_value'] , ['out_time', 'out_value']]
dict(zip([objects for objects in container, [(point.time, point.value) for point in contol_points]]))
Traceback (most recent call last):
File "<console>", line 1, in <module>
ValueError: dictionary update sequence element #0 has length 1; 2 is required
我希望有可能這樣做: https : //stackoverflow.com/a/33737067/9567948
忽略分數並使用int來顯示一種方法:
特定
control_points = [point(-1, 0), point(24, 100)]
container = [['in_time', 'in_value'] , ['out_time', 'out_value']]
注意
{ container[0][0]:control_points[0].time, container[0][1] : control_points[0].value }
給
{'in_time': -1, 'in_value': 0}
所以,這是第一項。 如果你像這樣枚舉container
:
[{ c[0]:control_points[i].time, c[1] : control_points[i].value } for i,c in enumerate(container)]
你得到這個:
[{'in_time': -1, 'in_value': 0}, {'out_time': 24, 'out_value': 100}]
這看起來似乎超過了兩點,但顯示了如何進行字典組合和枚舉。
這是我的嘗試:
我使用zip中的* iterator訪問這兩個列表,但排序不正確,所以我需要再次循環來調整排序。
from fractions import Fraction
container = [['in_time', 'in_value'] , ['out_time', 'out_value']]
control_points = [(Fraction(-1, 23), Fraction(0, 1)), (Fraction(24, 23), Fraction(100, 1))]
zipped_list = list(zip(*container,*control_points))
new_dict={}
i=0
for element in zipped_list:
while((i+3)<=len(element)):
print([element[i]], element[i+2])
new_dict[element[i]]=element[i+2]
i+=1
i=0
print(new_dict)
對於Python 2:
from fractions import Fraction
container = [['in_time', 'in_value'] , ['out_time', 'out_value']]
control_points = [(Fraction(-1, 23), Fraction(0, 1)), (Fraction(24, 23), Fraction(100, 1))]
zipped_list = dict(zip([element for x in container for element in x],[element for y in control_points for element in y]))
print(zipped_list)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.