小编scr*_*esh的帖子

Pythonic将dicts列表转换为namedtuples列表的方法

我有一个listdict.需要将其转换listnamedtuple(首选)或简单,tuple同时用空格分割第一个变量.

什么是pythonic方式呢?

我简化了我的代码.欢迎使用理解,gen表达式和itertools.

数据在:

dl = [{'a': '1 2 3',
       'd': '*',
       'n': 'first'},
      {'a': '4 5',
       'd': '*', 'n':
       'second'},
      {'a': '6',
       'd': '*',
       'n': 'third'},
      {'a': '7 8 9 10',
       'd': '*',
       'n': 'forth'}]
Run Code Online (Sandbox Code Playgroud)

简单的算法:

from collections import namedtuple

some = namedtuple('some', ['a', 'd', 'n'])

items = []
for m in dl:
    a, d, n = m.values()
    a = a.split()
    items.append(some(a, d, n))
Run Code Online (Sandbox Code Playgroud)

输出:

[some(a=['1', '2', '3'], d='*', …
Run Code Online (Sandbox Code Playgroud)

python algorithm dictionary list

7
推荐指数
1
解决办法
5357
查看次数

识别列表长度相似性的最佳方法

我有一个包含其键下的列表的dict:

dct = {'a': [1, 2, 3],
       'b': [1, 2, 3, 4],
       'c': [1, 2]}
Run Code Online (Sandbox Code Playgroud)

识别列表长度是否相同的最佳方法是什么?

这是我的解决方案:

import itertools
len(set(itertools.imap(len, dct.viewvalues()))) == 1
Run Code Online (Sandbox Code Playgroud)

True如果相似,False如果不相似

UPD:参考@RaymondHettinger建议替换mapitertools.imap

python algorithm list

5
推荐指数
2
解决办法
241
查看次数

如何将严格排序的字符串列表转换为dict?

我有一个严格排序的字符串列表:

['a',
 'b',
 'b/c',
 'b/d',
 'e',
 'f',
 'f/g',
 'f/h',
 'f/h/i',
 'f/h/i/j']
Run Code Online (Sandbox Code Playgroud)

此列表类似于树表示.所以,我需要将其转换为dict:

{'a': {},
 'b': {'c': {},
       'd': {}},
 'e': {},
 'f': {'g': {},
       'h': {'i': {'j': {}}}}}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这个词典中的键是父母,价值观是孩子.

UPD:我同意空的dictNone更好

python string tree dictionary list

2
推荐指数
2
解决办法
430
查看次数

用逗号忽略引号中的空格替换空格

给出由空格分隔的一串单词.需要用逗号替换空格,忽略引号中的空格.

>>> some_string = 'one two "three four" five "six seven"'
>>> replace_func(some_string)
'one,two,"three four",five,"six seven"'
Run Code Online (Sandbox Code Playgroud)

这是一个简单的决定:

def replace_func(some_str):
    lines = []
    i = 1
    for l in struct.split('"'):
        if i % 2:
            lines.append(l.replace(' ', ',')
        else:
            lines.append(l)
        i += 1

    parsed_struct = '"'.join(lines)
Run Code Online (Sandbox Code Playgroud)

有什么建议?

python algorithm

2
推荐指数
2
解决办法
8201
查看次数

str.join与我的类型

是否有机会使用以下方式加入我的类型:

str.join()
Run Code Online (Sandbox Code Playgroud)

我上课了:

class Slice(object):
    def __init__(self, start, end):
        self.__start = start
        self.__end = end

    def __str__(self):
        return '{0}:{1}'.format(self.__start, self.__end)

    def __repr__(self):
        return "'{}'".format(str(self))
Run Code Online (Sandbox Code Playgroud)

我应该覆盖什么来执行这种代码:

','.join(Slice(1, 2), Slice(3, 4))
Run Code Online (Sandbox Code Playgroud)

得到这样的结果:

'1:2,3:4'
Run Code Online (Sandbox Code Playgroud)

python string inheritance overriding

0
推荐指数
1
解决办法
128
查看次数

标签 统计

python ×5

algorithm ×3

list ×3

dictionary ×2

string ×2

inheritance ×1

overriding ×1

tree ×1