如何使用“ for”循环拆分值并创建字典列表?

时间:2019-09-15 06:35:55

标签: python-3.x

免责声明:我绝对是Python编程的初学者,请耐心等待。我正在为此上课,非常渴望获得帮助。

我正在创建一个程序,可以从任何包含以下信息的文本文件中读取数据: 生产,是水果(是/否)

islice

我需要将字符串转换为如下所示的列表:

String: "Apple","Y""Banana","Y""Pumpkin","N""Orange","Y""Eggplant","N"...

在那之后,我必须拆分/分离值,以便它们可以适合如下所示的字典:

"Apple","Y"
"Banana","Y"
"Pumpkin","N"
...

对于此任务,我被告知我需要使用 for 循环分割行并创建一个列表的字典。但是,我不知道如何以及在哪里放置它。

请注意,该程序必须能够从任何文件读取数据。用户还必须能够修改列出的水果/蔬菜是否确实是水果。

非常感谢您!

3 个答案:

答案 0 :(得分:1)

所以我在这里收到了很多评论, 这是建议的解决方案,它将起作用

x = "Apple","Y""Banana","Y""Pumpkin","N""Orange","Y""Eggplant","N"
length = len(x) 
mainList = []

def split_str(s):
  return [ch for ch in s]

for i in range(length):
    dict = {}
    if (i == 0):
        dict["produce"] = x[i]
        if(split_str(x[i+1])[0] == 'Y'):
            dict["fruit"] = 'Yes'
        else:
            dict["fruit"] = 'No'
        mainList.append(dict)
    else:
        if(i < 5):
            dict["produce"] = x[i][1:]
            if(split_str(x[i+1])[0] == 'Y'):
                dict["fruit"] = 'Yes'
            else:
                dict["fruit"] = 'No'
            mainList.append(dict)

print(mainList)

在线小提琴链接: https://pyfiddle.io/fiddle/b3de895b-8542-419d-841a-ad7ddf008d9a/?i=true

答案 1 :(得分:0)

我希望这就是你想要的...

string="apple","Y","banana","Y","pumpkin","N"

dict={}
for i in range(0,len(string),2):
    dict[string[i]]=string[i+1]

for k,v in dict.items():
    print(k,v)

答案 2 :(得分:0)

非常感谢那些回答我的问题的人。我可以使用以下代码正常运行此程序:

# Read the contents from the file first.
def get_content(filename):
    f = open(filename,"r")
    if f.mode == 'r':
        content = f.read()
        content = content.replace('"','')
    return content

# Convert the contents to list of dictionaries (Y/N being a boolean).
def convert_to_list(content):
    string = sorted(content.split('\n'),key=str.lower)
    produce_list = []
    for x in string:
        a = x.split(',')
        b: bool = bool('Y' in a[1])
        d = dict({'produce': a[0], 'fruit':b})
        restaurant_list.append(d)
    return restaurant_list

我能够在站点外的帮助下完成此任务。非常感谢大家的投入!