簡體   English   中英

從列表中映射字典鍵及其對應的值?

[英]Mapping a dictionary key and its corresponding values from a list?

我設法讀取一個.txt文件,並將每一行作為列表的不同元素讀取; 相當容易。 接下來,我從每個元素中剝離了所有非數字字符(僅保留0-9和“。”),這也很容易做到。

但是,然后剩下的列表中總共有90個元素。 從元素0開始,我希望每5個元素成為字典的鍵(0、5、10、15等)。 然后,我希望介於兩者之間的4個值與上一個關鍵字的值相對應(作為列表長度4)。

例如:my_list [0]是具有相應值的鍵my_list [1:5] my_list [5]是具有相應值的鍵my_list [6:10]等,等等

我設法取出了第5個元素,並使其成為自己的列表。 只是拿着鑰匙。 而且我什至設法創建了另一個列表,該列表將值之間的所有值都保留為長度為4的單獨列表。

我試過了:

my_dict = dict()

for i in my_keys:
    my_dict[i] = [x for x in every_four]

my_dict = dict()

for i in my_keys:
    for x in every_four:
        my_dict[i] = x

第一個給了我正確的鍵,但是每個值只是整個every_four列表,而不僅僅是每個元素。 第二個為我提供了正確的鍵,但是每個值僅是every_four列表的第一個元素,它沒有迭代。

有人可以幫我這樣工作嗎? 還有什么更簡單的方法可以從原始數組執行此操作? 只需將每個第5個元素設置為一個鍵,然后將這四個元素之間的值設置為該鍵的對應值?

如果您希望將第五個元素作為字典的鍵並將下一個連續四個元素的列表作為值,則可以嘗試字典理解。

my_dict = {my_list[i] : my_list[i+1 : i+5] for i in range(0, len(my_list), 5)}

對於樣品輸入-

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

輸出將是-

{0: [1, 2, 3, 4], 5: [6, 7, 8, 9]}

但是,如果某個鍵沒有下一個元素,則此代碼將生成一個空列表作為值。

輸入-

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

輸出-

{0: [1, 2, 3, 4], 10: [], 5: [6, 7, 8, 9]}

至於您的代碼,假設您正確地設置了every_fourmy_keys ,則存在一些問題。 第二次嘗試是遍歷my_keys列表中的每個元素,並將其添加為字典的鍵。 在內部循環中,您將x添加為字典的值。 因此,對於您的內部循環中的每次迭代,鍵i的值都將被覆蓋。 您本可以做的是-

my_dict = dict()

for i in my_keys:
    for x in every_four:
        my_dict.setdefault(i, []).append(x)

首次嘗試時,我真的需要查看如何獲取my_keysevery_four來指出錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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