Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python创建字典_Python_List_Dictionary - Fatal编程技术网

用python创建字典

用python创建字典,python,list,dictionary,Python,List,Dictionary,我有一个人的名单,谁控制谁,但我需要把他们全部结合起来,组成几个句子来计算谁控制一个人的名单 员工订单来自txt文件: a控制b a控制c a控制d b控制c d控制e d控制f e控制f 我知道我必须创建一个字典,将txt文件加载到其中,但我被卡住了。 关于如何做到这一点有什么想法吗 逐行读取文件 将每行的第一个和最后一个单词提取为列表中的元组 处理此列表的元素并创建字典 afile = open('filename') tuple_data = [] for line in afile:

我有一个人的名单,谁控制谁,但我需要把他们全部结合起来,组成几个句子来计算谁控制一个人的名单

员工订单来自
txt
文件:

a控制b
a控制c
a控制d
b控制c
d控制e
d控制f
e控制f

我知道我必须创建一个字典,将
txt
文件加载到其中,但我被卡住了。 关于如何做到这一点有什么想法吗
  • 逐行读取文件
  • 将每行的第一个和最后一个单词提取为列表中的元组
  • 处理此列表的元素并创建字典

    afile = open('filename')
    tuple_data = []
    for line in afile:
        a = line.strip().split()
        tuple_data.append((a[0].strip(), a[-1].strip()))
    
  • 元组数据现在有:

    [('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('d', 'e'), ('d', 'f'), ('e', 'f')]
    
    现在使用defaultdict构建输出:

    >>> from collections import defaultdict
    >>> output = defaultdict(list)
    >>> for x, y in tuple_data:
    ...     output[x].append(y)
    ...
    >>> output
    defaultdict(<class 'list'>, {'a': ['b', 'c', 'd'], 'b': ['c'], 'e': ['f'], 'd': ['e', 'f']})
    

    这与您的相同吗?我如何使它使每一个最后的值之前都有一个“and”,而不是一个“,”,并且如果我想使用我想要的任何不同的文本,我是否会将其更改为afile=open(输入('filename'))
    print 'Employee order:'
    for k, v in output.items():
        values = ','.join(v)
        print '\t{} controls {}'.format(k, values)