簡體   English   中英

如何將列表映射到dict鍵作為值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM