簡體   English   中英

python中的列表和字典轉換

[英]Lists and dictionary conversion in python

所以在下面的程序中,我想出了一些無法按我想要的方式工作的東西,我需要幫助來解決這個問題。

第一個輸入接受一個字符串

"Joe,123-5432 Linda,983-4123 Frank,867-5309" 

它首先用空格替換逗號,並將其轉換為列表。

['Joe', '123-5432', 'Linda', '983-4123', 'Frank', '867-5309']

但是,我想使用第一個條目作為鍵並將第二個條目作為值將此列表轉換為字典。 所以它看起來像這樣:

{'Joe':'123-5432', 'Linda':'983-4123', 'Frank':'867-5309'}

這是我發現問題的地方(在函數內)。 當我將它調用到 function 中時,它按單個字符將其分解,而不是將.split s 視為一個完整的字符串,它看起來像這樣......

{'J': 'o', 'e': ' ', '1': '2', '3': ' ', '5': '3', ' ': '9', 'i': 'n', 'd': 'a', '8': '6', '-': '4', 'F': 'r', 'a': 'n', 'k': ' ', '7': '-', '0': '9'}

你知道這很有趣,但不是我的目標。

稍后在程序中,當Ecall獲得輸入時,它會交叉引用列表並從字典中提取電話號碼。 你能幫我更好地理解Pdict中的 Pdict 嗎?

def Convert(FormatInput):
    Pdict = {FormatInput[i]: FormatInput[i + 1] for i in range(0, len(FormatInput), 2)}
    return Pdict

user_input = input()
FormatInput=user_input.replace(",", " ")
Pdict=Convert(FormatInput)

Ecall = (input())
print(Pdict.get(Ecall, 'N/A'))

使用兩個不同的split操作而不是嘗試在單個split中執行replace操作(這只會讓事情變得更加困難,因為現在您已經丟失了哪個分隔符的信息)。

首先拆分原始字符串(在空白處)以生成以逗號分隔的條目列表:

>>> user_input = "Joe,123-5432 Linda,983-4123 Frank,867-5309"
>>> user_input.split()
['Joe,123-5432', 'Linda,983-4123', 'Frank,867-5309']

然后在每個條目中用逗號分隔,這樣你就有了一系列可以傳遞給dict()的對。 你可以在一行中完成整個事情:

>>> dict(entry.split(",") for entry in user_input.split())
{'Joe': '123-5432', 'Linda': '983-4123', 'Frank': '867-5309'}

暫無
暫無

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

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