小编blh*_*ing的帖子

将项目根目录添加到 sys.path 是一个好习惯吗?

我有一个关于向 python 添加项目路径的问题,以促进import工作。

情况

当我写在Python代码,我通常会添加必要的路径sys.path使用

import sys
sys.path.append("/path/to/dir/") # almost every `.py` need this
Run Code Online (Sandbox Code Playgroud)

有时,当我的项目变得更大并包含多个目录时,这种方法看起来很笨重且容易出错(尤其是当我重新组织文件时)

最近,我开始使用 bash 脚本(位于项目根目录),将sys.path.appendwith project root 参数添加到项目中的.py文件中。使用这种方法,我几乎不必手动关心导入模块。

我的问题是:这是一个好的做法吗?与我的旧方法相比,我觉得这对我自己很方便,但是由于 bash 脚本是一个单独的文件,我需要 2 个命令来运行我的项目中的任何脚本(一个用于 bash,一个用于.py. 我可以包含调用.pybash的命令,但它远不如从终端直接调用它灵活。

真的很想听听大家的建议!提前致谢。任何建议将不胜感激!

python bash coding-style

9
推荐指数
1
解决办法
5772
查看次数

将列表与字典中的值进行比较

我有一个包含值列表和列表的字典:

dict1={'first':['hi','nice'], 'second':['night','moon']}
list1= [ 'nice','moon','hi']
Run Code Online (Sandbox Code Playgroud)

我想将字典中的值与list1进行比较,如果每个键的值出现在列表中,则为键创建一个计数器:输出应该是这样的:

   first 2
   second 1
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

count = 0 
for list_item in list1: 
    for dict_v in dict1.values():
      if list_item.split() == dict_v:
        count+= 1
        print(dict.keys,count)
Run Code Online (Sandbox Code Playgroud)

任何帮助?提前致谢

python dictionary list python-3.x

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

Python中使用JSON数据的HTTP PUT请求

我想使用JSON数据在Python中发出PUT请求

data = [{"$TestKey": 4},{"$TestKey": 5}]
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?

import requests
import json

url = 'http://localhost:6061/data/'

data = '[{"$key": 8},{"$key": 7}]'

headers = {"Content-Type": "application/json"}

response = requests.put(url, data=json.dumps(data), headers=headers)

res = response.json()

print(res)
Run Code Online (Sandbox Code Playgroud)

得到这个错误

requests.exceptions.InvalidHeader: Value for header {data: [{'$key': 4}, {'$key': 5}]} must be of type str or bytes, not <class 'list'>

python json http put

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

RuntimeError:迭代过程中突变的OrderedDict(Python3)

得到标题中提到的错误。下面提到的函数由通过POST api调用的另一个函数调用。

错误位于打印语句下方的行上。不知道错误的含义以及为什么会出现。用于一周前运行的相同代码。

def remove_individual_stops(ordered_parkstop_dict, relevant_data):
    new_ordered_parkstop_dict = ordered_parkstop_dict
    for key, value in ordered_parkstop_dict.items():
        if len(value) == 0:
            for k,v in ordered_parkstop_dict.items():
                if key in v:
                    new_ordered_parkstop_dict.pop(key)
        print (type(ordered_parkstop_dict), ordered_parkstop_dict)
        for k,v in ordered_parkstop_dict.items():
            klist = []
            keylist = []
            if value and v:
                if len(v)==1 and len(value)==1:
                    klist.append(k), keylist.append(key)
                if (keylist == v) and (klist == value and len(value) == 1):
                    new_ordered_parkstop_dict.pop(key)
    return new_ordered_parkstop_dict
Run Code Online (Sandbox Code Playgroud)

python python-3.x

6
推荐指数
1
解决办法
4018
查看次数

将列表列表转换为具有多个键值的字典

我需要编写一个函数来接受代表每个人朋友的列表列表,并需要将其转换为字典.所以输入[['A','B'],['A','C'],['A','D'],['B','A'],['C','B'],['C','D'],['D','B'],['E']]应该返回{A:[B,C,D],B:[A],C:[B,D],D:[B],E:None}

输入:

[['A','B'],['A','C'],['A','D'],['B','A'],['C','B'],['C','D'],['D','B'],['E']]
Run Code Online (Sandbox Code Playgroud)

预期产出:

{A:[B,C,D],B:[A],C:[B,D],D:[B],E:None}
Run Code Online (Sandbox Code Playgroud)

目前我正在尝试以下方法:

s=[['A','B'],['A','C'],['A','D'],['B','A'],['C','B'],['C','D'],['D','B'],['E']]

output=dict.fromkeys((set([x[0] for x in s])),[ ])

for x in s:
    if len(x)>1:
        output[x[0]].append(x[1])
    else:
        output[x[0]].append(None)
Run Code Online (Sandbox Code Playgroud)

但是输出给了我每个键的所有值,而不是只返回相应的值

我得到的输出是:

{
'A': ['B', 'C', 'D', 'A', 'B', 'D', 'B', None],

 'B': ['B', 'C', 'D', 'A', 'B', 'D', 'B', None],

 'C': ['B', 'C', 'D', 'A', 'B', 'D', 'B', None],

 'D': ['B', 'C', 'D', 'A', 'B', 'D', 'B', None],

 'E': ['B', 'C', 'D', 'A', 'B', 'D', 'B', None]
}
Run Code Online (Sandbox Code Playgroud)

python dictionary list python-3.x

6
推荐指数
1
解决办法
79
查看次数

Python 中是否有一种简单且首选的德语数字字符串格式化方法?

1.000,1234我正在Windows操作系统下的Python中寻找德语数字格式(例如)的正确方法。

我尝试过locale.setlocale但没有成功。

相反,我编写了一个函数来提供所需的输出。

有没有更好的办法?

def ger_num(number, precision=3):
    """
    returns german formatted number as string or an empty string
    """
    if number is not None:
        try:
            my_number = "{:,f}".format(number)
        except ValueError:
            return ""

        decimals, fraction = my_number.split(".")[0], my_number.split(".")[1]
        decimals = decimals.replace(",", ".")

        if precision:
            return decimals + "," + fraction[:precision]
        else:
            return decimals

    else:
        return ""
Run Code Online (Sandbox Code Playgroud)

python locale localization string-formatting python-3.x

6
推荐指数
1
解决办法
5718
查看次数

用列表递归遍历嵌套字典,并替换匹配的值

我想创建一个遍历包含列表的嵌套字典的函数。对于与关键字匹配的每个值,该函数将其替换为另一个关键字。

函数是否返回另一个字典或是否更改主字典并不重要。

我试图分开案例: - 如果数据是一个字典,做一些 - 如果数据是一个列表,做别的

字典:


data_dict = {
  "name": "AAAAAA",
  "content": "BBBBBB",
  "dat": [
    {
      "author": {
        "name": "CCCCCC",
        "surname": "DDDDDD",
      },
      "title": "FFFFFF",
      "color": 15258703,
      "fields": [
        {
          "name": "GGGGGG",
          "value": "HHHHHH",
        },
        {
          "name": "IIIIII",
          "value": "JJJJJJ",
        }

      ],
      "thumbnail": {
        "url": "KKKKKK"
      },
      "image": {
        "url": "LLLLLL"
      },
      "footer": {
        "text": "MMMMMMM",
        "icon_url": "NNNNNN"
      }
    }
  ]
}


Run Code Online (Sandbox Code Playgroud)

现在我只是想改变每个值,看看我是否也在迭代。我可以打印所有data_dict更改的值,但我无法在字典中管理它...


def recursive_replace_valuer(data, match, repl):

    if isinstance(data, list):
        for l in data:
            recursive_replace_valuer(l, match, …
Run Code Online (Sandbox Code Playgroud)

python recursion json dictionary python-3.x

6
推荐指数
1
解决办法
2268
查看次数

以有效的方式加入具有格式的元组列表

我有以下元组列表

a = [(5, 2), (2, 4)]
Run Code Online (Sandbox Code Playgroud)

我需要输出以下文本

(5,2) (2,4)
Run Code Online (Sandbox Code Playgroud)

我试过了

[",".join(str(i) for i in j) for j in a]
Run Code Online (Sandbox Code Playgroud)

它提供以下列表

['5,3', '2,4']
Run Code Online (Sandbox Code Playgroud)

但是尚未找到获得所需输出的有效方法,它必须适用于不同大小的元组列表。

python python-3.x

6
推荐指数
1
解决办法
87
查看次数

在Python中,从列表中嵌套结构的平面表示创建索引,按字母顺序排序

我有列表,其中每个条目代表一个嵌套结构,其中/代表结构中的每个级别。

['a','a/b/a','a/b','a/b/d',....]
Run Code Online (Sandbox Code Playgroud)

我想获取这样一个列表并返回一个索引列表,其中每个级别按字母顺序排序。

如果我们有以下列表

['a','a/b','a/b/a','a/c','a/c/a','b']
Run Code Online (Sandbox Code Playgroud)

它代表嵌套结构

'a':                   #1

    'b':               #1.1
         'a': ...      #1.1.1
    'c':               #1.2
         'a': ...      #1.2.1
'b' : ...              #2
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取输出

 ['1','1.1','1.1.1', '1.2','1.2.1','2']
Run Code Online (Sandbox Code Playgroud)

但我对如何解决这个问题有真正的问题,它可以递归解决吗?或者对于每个级别由 分隔的任何通用列表,有什么方法可以解决这个问题/?该列表原本不一定是排序的,并且每个级别可以是任何通用词。

python algorithm

6
推荐指数
1
解决办法
214
查看次数

将额外的可选参数传递给回调而不破坏现有的回调

我有一个接受回调的 API 方法。回调需要一个参数。

我希望此方法将第二个参数传递给接受它的回调。但是,我必须保持与仅接受原始参数的回调的兼容性。(事实上​​,我预计大多数用户不会关心附加参数,因此强迫他们明确忽略它会很烦人。)

我知道这可以使用 来完成inspect。我想知道是否有一个“惯用”或常用的解决方案,但不是那么重量级。

python python-3.x python-3.3

5
推荐指数
1
解决办法
1126
查看次数